{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/post/how-to-test-ie-with-karma/",
    "result": {"data":{"site":{"siteMetadata":{"title":"WEB EGG","author":"Leko - CTO at Yuimedi"}},"markdownRemark":{"id":"c4c377e5-e598-594d-8557-e85868ec8802","excerpt":"久々の更新です。 社会人になってからいつの間にか１年が経過していました。時が立つのは早いものです。。。 最近はインプットを増やしてばかりで全然アウトプットできていなかったので、少しずつアウトプットできればと思います。 ここんところ業務の都合でPHP…","html":"<p>久々の更新です。<br>\n社会人になってからいつの間にか１年が経過していました。時が立つのは早いものです。。。</p>\n<p>最近はインプットを増やしてばかりで全然アウトプットできていなかったので、少しずつアウトプットできればと思います。 ここんところ業務の都合でPHPネタばかりだったので、そろそろ本来のフロントエンドの話に切り替えようと思います。</p>\n<p>さて本題ですが、Angularのチームが開発した<a href=\"http://karma-runner.github.io/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Karma</a>というツールを使用して、<br>\n<strong>MacでIEのテスト</strong> を実行してみようと思います。</p>\n<!--more-->\n<h2 id=\"今回のゴール\" style=\"position:relative;\"><a href=\"#%E4%BB%8A%E5%9B%9E%E3%81%AE%E3%82%B4%E3%83%BC%E3%83%AB\" aria-label=\"今回のゴール permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>今回のゴール</h2>\n<ul>\n<li>MacでIE8, IE9のテストができる</li>\n<li>nodejsのコードでブラウザ上のテストができる</li>\n<li>es5-shimを入れてes5依存の処理でもIE8で動けるようにする</li>\n</ul>\n<p>今回の記事の内容を反映したリポジトリも作成しました。<br>\n記事だけではわからない箇所はそちらも合わせてご覧下さい。</p>\n<blockquote>\n<p>Leko/karma-ievm-seed<br>\n<a href=\"https://github.com/Leko/karma-ievm-seed\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://github.com/Leko/karma-ievm-seed</a></p>\n</blockquote>\n<h2 id=\"使うもの\" style=\"position:relative;\"><a href=\"#%E4%BD%BF%E3%81%86%E3%82%82%E3%81%AE\" aria-label=\"使うもの permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>使うもの</h2>\n<ul>\n<li><a href=\"https://www.virtualbox.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Virtualbox</a></li>\n<li><a href=\"http://jasmine.github.io/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Jasmine</a></li>\n<li><a href=\"http://karma-runner.github.io/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Karma</a></li>\n<li><a href=\"http://browserify.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Browserify</a></li>\n<li><a href=\"https://www.npmjs.com/package/karma-ievms\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">karma-ievms</a></li>\n<li>その他各種Karma用アダプタ</li>\n</ul>\n<p>さり気なくBrowserifyが出てきていますが、下記の参考資料を見つつ情報を保管してもらえればと思います。<br>\nJasmineはMochaと書き方がほとんど変わらないのでどちらか知っていれば大丈夫だと思います。</p>\n<h2 id=\"参考リンク\" style=\"position:relative;\"><a href=\"#%E5%8F%82%E8%80%83%E3%83%AA%E3%83%B3%E3%82%AF\" aria-label=\"参考リンク permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>参考リンク</h2>\n<blockquote>\n<p>Browserify: それはrequire()を使うための魔法の杖<br>\n<a href=\"http://qiita.com/cognitom/items/4c63969b5085c90639d4\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http://qiita.com/cognitom/items/4c63969b5085c90639d4</a></p>\n</blockquote>\n<!---->\n<blockquote>\n<p>power-assertでJavaScriptのテストをする ブラウザ編<br>\n<a href=\"http://efcl.info/2014/0411/res3820/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http://efcl.info/2014/0411/res3820/</a></p>\n</blockquote>\n<p>今自分が使っている環境ではSauce Labsやpower-assertなどモリモリなのですが、<br>\n今回はあくまで <strong>Karma x MacでIE</strong> にフォーカスするため本題から逸れる話はなるべく割愛します。</p>\n<h2 id=\"リポジトリをつくる\" style=\"position:relative;\"><a href=\"#%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B\" aria-label=\"リポジトリをつくる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>リポジトリをつくる</h2>\n<p>では早速進めていこうと思います。<br>\n調べが足りずに最近知ったのですが、<code>npm install --save-dev</code>は<code>npm i -D</code>と略すことができるようです。便利。<br>\n以降の手順でもバシバシ使っています。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token builtin class-name\">cd</span> /path/to/work\n<span class=\"token function\">mkdir</span> karma-ievm-seed <span class=\"token operator\">&amp;&amp;</span> <span class=\"token builtin class-name\">cd</span> karma-ievm-seed\n<span class=\"token function\">git</span> init\nhub create <span class=\"token comment\"># see https://github.com/github/hub#installation</span>\n<span class=\"token function\">npm</span> init   <span class=\"token comment\"># 適当に内容を入力</span>\n<span class=\"token function\">git</span> <span class=\"token function\">add</span> package.json\n<span class=\"token function\">git</span> commit -m <span class=\"token string\">\"initial commit\"</span>\n<span class=\"token function\">npm</span> i -g karma-cli <span class=\"token comment\"># インストール済みなら不要</span>\n<span class=\"token function\">npm</span> i -D karma\nkarma init</code></pre></div>\n<p><code>karma init</code>すると色々と聞かれると思います。<br>\nテストの構成を聞かれるので、テストフレームワークは<code>Jasmine</code>。<code>requirejs</code>は使わない。対象ブラウザは<code>Chrome</code>あたりを選んでおけばよいと思います。<br>\nこの対話CLIで設定するより、どうせ後で直接設定ファイルをいじるのでこの段階では正直なんでもよいです。</p>\n<h2 id=\"蛇足dotenvを使用する\" style=\"position:relative;\"><a href=\"#%E8%9B%87%E8%B6%B3dotenv%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B\" aria-label=\"蛇足dotenvを使用する permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>（蛇足）dotenvを使用する</h2>\n<p>私の環境は<code>Firefox</code>を<a href=\"http://caskroom.io/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">brew-cask</a>で入れてしまっているので、通常のパスとはズレています。<br>\nKarmaでそのようなブラウザを起動する場合、<code>FIREFOX_BIN</code>という環境変数を指定する必要があります。<br>\n<code>.bash_profile</code>などに環境変数を書いておいても良いのですが、<br>\nのちのち<code>SauceLabs</code>の接続情報を入れたりと、環境変数をいじれるようにしておくと何かと都合が良いので<code>dotenv</code>を使用します。</p>\n<p><a href=\"https://www.npmjs.com/package/dotenv\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">dotenv</a>はプロジェクト直下の<code>.env</code>というファイルを読み取り環境変数に自動的にセットしてくれるツールです。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">npm</span> i -D dotenv\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"FIREFOX_BIN=/opt/homebrew-cask/Caskroom/firefox/latest/Firefox.app/Contents/MacOS/firefox-bin\"</span> <span class=\"token operator\">></span> .env</code></pre></div>\n<p>あとはこの定義ファイルを読み込むために、<code>karma init</code>で作成された<code>karma.conf.js</code>の先頭にも以下の処理を追加しておきます。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'dotenv'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">load</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"ie8で落ちるテストを記述する\" style=\"position:relative;\"><a href=\"#ie8%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E8%A8%98%E8%BF%B0%E3%81%99%E3%82%8B\" aria-label=\"ie8で落ちるテストを記述する permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IE8で落ちるテストを記述する</h2>\n<p>まだIEの準備はしていませんが、まずはIE8では落ちるテストを記述してみようと思います。<br>\nIE8で使用できないメソッドとして、<code>Array#reduce</code>を採用しました。</p>\n<p>テスト用のソースコードとテストコードは<a href=\"https://github.com/Leko/karma-ievm-seed/commit/f63090c8f020d90e326a9a9cee3f7d4e438555fe?diff=unified\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a>になります。</p>\n<p>ソースコードに<code>module.exports</code>、テストコード内に<code>require</code>を使用しているので、 <strong>このままではブラウザで動作しません。</strong><br>\nかと言ってブラウザで動かすためにわざわざグローバルを汚染したくもありません。<br>\nということで、Browserifyを使用してnodeで動くコードをブラウザでも動くように変換します。</p>\n<h2 id=\"karmaの設定を変更してローカルのchromeで結果を確認\" style=\"position:relative;\"><a href=\"#karma%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%AEchrome%E3%81%A7%E7%B5%90%E6%9E%9C%E3%82%92%E7%A2%BA%E8%AA%8D\" aria-label=\"karmaの設定を変更してローカルのchromeで結果を確認 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Karmaの設定を変更してローカルのChromeで結果を確認</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">npm</span> i -D karma-browserify brfs</code></pre></div>\n<p>Karmaの設定ファイルは<a href=\"https://github.com/Leko/karma-ievm-seed/commit/bc2d9fd2d8f2c43ac14e9fc40c62e05d9edaaef9\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a>のように変更して下さい。</p>\n<p>概要だけ抜き出すと、</p>\n<ul>\n<li><code>karma-browserify</code>と<code>brfs</code>を追加</li>\n<li><code>frameworks</code>に<code>browserify</code>の指定を追加</li>\n<li><code>preprocessors</code>でテストコードを<code>browserify</code>で変換する指定を追加</li>\n<li><code>browserify</code>の変換設定を追加</li>\n</ul>\n<p>です。<code>brfs</code>は同期的にBrowserifyのビルドが行えるツールです。<br>\n以上の設定をしたらテストを実行してみます。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">karma start</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 668px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2cfc64fd750aca230b5210eebe852ccd/0ad97/5ac7135e55fda451dcc7ad8d69ae344d.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 43.113772455089816%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'172\\'%20viewBox=\\'0%200%20400%20172\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2086v86h401V0H0v86m0%201a3495%203495%200%20003%2081l1-2v1c-1%202%203%202%205%200%201-1%201-1%201%201h1c1-4%201-4-2-4H3c-2%200-3-4%200-5l1-2-1-2c-2%201-2%200-2-1%200-2%200-3%201-2l3-2h2c0%202%203%201%204-1%201-1%201-1-1-1H7c-1-1-3-2-4-1-1%200-2-1-2-3%200-1%201-2%203-2l4-1-1-2-2%201c0%202-1%200-2-1l-1-1-1-2c0-2%201-2%205-2l2-2-1-2-2%201c0%202-1%200-2-1l-1-1-1-2c0-2%201-2%205-2l2-2-1-2-2%201H4v-1l-1-1-2-2c0-2%201-2%205-2%201%200%202-1%202-3l-1-2c-3%201-6%200-6-2s3-3%206-2l1-2-1-3c-3%201-6%200-6-2s3-3%206-2l1-2-1-3c-3%201-6%200-6-2s2-2%206-2l1-2c1-1%201-1%201%201h3c2%202%204%201%204-1%200-3%200-3-5-3-9%200-10%200-10-2s3-3%206-2l1-2-1-3c-3%201-6%200-6-2s2-2%206-2l1-2h1c0%202%200%202%201%201h2c2%202%204%201%204-1s-1-3-6-3c-9%200-9%200-9-2s2-2%206-2l1-2h1c0%202%200%202%201%201h2c2%202%204%201%204-1s-1-3-6-3c-9%200-9%200-9-2s2-2%206-2l1-2c1-1%201-1%201%201h1l2-1c1%203%204%202%204%200s-1-3-6-3c-9%200-9%200-9-2s2-2%206-2l1-2c1-1%201-1%201%201h1l2-1c1%203%204%202%204%200s-1-3-6-3c-9%200-9%200-9-2s1-2%203-2c3%200%204-1%204-2h1c0%201%201%202%202%201l3%201h2c1-4-3-6-8-4H6l-1-1c-2%201-4%200-4-2s1-2%204-2c2%200%203%200%203-2%200-1-1-2-6-2-3%200-1-4%203-5%202%200%203-1%203-2l-1-2c-5%201-6%200-6-6L0%2087m25-74v3h7c1%202%2017%202%2019%201h1l1-1h4c2%202%202%202%202%200-1-2-2-4-3-3-1%202-28%202-28%200h-3m201%201h-3c-2-1-14-1-15%201h-2c1-2-3-1-4%200h-1l-3-1c-1%200-2%200-2%202%201%202%207%202%208%200h1c1%202%2013%202%2014%200h1c1%202%208%202%209%200h4l4%201h1c-1-2%201-3%201-1h4l4%202c3%200%204-2%203-3h-6l-8-1-7-1-3%201m123%2071v3l1%201%201-2h1c1%202%2012%202%2011%200l2-1v1c-1%202-1%202%204%202%206%200%206%200%206-3l-1-2-2%201h-1c-1-1-10-1-11%201h-1c0-2%200-2-1-1h-2l-5-1c-2%200-3%200-2%201m-87%2010c-1%202%202%204%205%203h4l3-1h4l5%201h12c2%201%202%201%202-1s0-3-3-3l-4%201c-1%201-1%201%200%200%200-1-1-2-6-2l-6%201-3%201-2-1-5-1c-4%200-5%201-6%202m-109%208v3h10l2%201%201-1h10l-1-1v-1l2%201%206%202c5%200%205%200%205-3%200-2-1-3-2-1h-21l-8%201-2%201v-2l1-1-3%201m79%200v3h1l2-1c0%201%202%202%2010%202l9-1h5l3%201c3-1%204-1%204-3s-1-2-4-1h-7l-4%201h-4v-1l-2-1-2%201h-5l-4-1c-2%200-3%200-2%201m36%200l-1%203c-1%201-1%201%201%201%201%200%202%200%201-2l1%201c2%202%204%203%204%200h16l2%201h3c2%201%202%201%202-1s0-2%201-1c1%202%207%202%207%201-1-3-6-4-9-3h-28m-20%208v3c1%202%201%202%201%200l1-2%201%202%201%201h1c1%202%205%201%205-1%200-3%202-3%202%200%200%202%200%202%201%200s1-2%201%200l10%201%2010%201h8c4%200%205-1%206-2%201-2%201-2-1-2h-9l-4%201-4-1c0-2-5-1-5%201h-1c0-2%200-2-3-1h-3c0-2-9-1-9%201h-1c0-2-1-2-2-2h-6m-79%201v3h10l2%201%201-1h1l5%201c4%200%205-1%203-2v-1l2%201c0%201%201%202%205%202%205-1%206-1%206-3s0-2-2-2l-4%201a110%20110%200%2000-28%202l1-2v-1l-2%201m28%2017h-1l-1%201-1%202v-1c0-2-1-2-3-2-3%200-3%200-3%202%201%204%2027%204%2027%200l-1-2-1%202-1%201-1-2-1-1-1%202-1%201-1-2c0-1-9-2-10-1m-8%209l-1%203%2014%201h13l-1-2-1-2v2l-1%201-1-2-1-1-1%202-1%201-1-2c0-2-7-2-10-1h-1l-1%202h-1c0-2-3-3-5-2m16%209c-2%203%202%206%206%204h3v-1l-1-2%202%201c1%202%203%202%209%202s7%200%206-2c0-2%200-2-5-2-4-1-5%200-5%201l-1%202-2-1%201-1v-1h-3c-1-2-5%200-5%202h-1c-1-3-3-4-4-2m-79%2011c0%202%200%202%204%202h8c2%201%206%201%207-1h1l6%201c5%200%205%200%205-3l-1-2-1%201-20%201-5%201c-1%201-1%201-1-1l-1-2c-1%200-2%201-2%203m62-2l1%202v1a1182%201182%200%200123%201c2%200%202%200%203-2l-1-3-1%202-1%202-1-2-1-2-1%202-1%202-1-2c0-1-1-2-9-2l-10%201\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/2cfc64fd750aca230b5210eebe852ccd/5251b/5ac7135e55fda451dcc7ad8d69ae344d.webp 167w,\n/static/2cfc64fd750aca230b5210eebe852ccd/7390e/5ac7135e55fda451dcc7ad8d69ae344d.webp 334w,\n/static/2cfc64fd750aca230b5210eebe852ccd/7c056/5ac7135e55fda451dcc7ad8d69ae344d.webp 668w,\n/static/2cfc64fd750aca230b5210eebe852ccd/4bde0/5ac7135e55fda451dcc7ad8d69ae344d.webp 717w\"\n              sizes=\"(max-width: 668px) 100vw, 668px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/2cfc64fd750aca230b5210eebe852ccd/21521/5ac7135e55fda451dcc7ad8d69ae344d.png 167w,\n/static/2cfc64fd750aca230b5210eebe852ccd/86d36/5ac7135e55fda451dcc7ad8d69ae344d.png 334w,\n/static/2cfc64fd750aca230b5210eebe852ccd/74866/5ac7135e55fda451dcc7ad8d69ae344d.png 668w,\n/static/2cfc64fd750aca230b5210eebe852ccd/0ad97/5ac7135e55fda451dcc7ad8d69ae344d.png 717w\"\n            sizes=\"(max-width: 668px) 100vw, 668px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/2cfc64fd750aca230b5210eebe852ccd/74866/5ac7135e55fda451dcc7ad8d69ae344d.png\"\n            alt=\"Karma result without IE\"\n            title=\"Karma result without IE\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>設定ファイルの<code>browsers</code>に指定されたブラウザが立ち上がりテストが実行されたと思います。<br>\nソースコードを編集しても、テストコードを編集しても、保存すると自動でテストが再実行されたと思います。<br>\n<strong>Karmaまじ便利。ちょう便利。</strong></p>\n<p>Karmaでテストコードが動いたのも確認できたので、IEでもテストを実行できるようにしていきます。</p>\n<h2 id=\"ieのvmを入れる\" style=\"position:relative;\"><a href=\"#ie%E3%81%AEvm%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B\" aria-label=\"ieのvmを入れる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IEのVMを入れる</h2>\n<p>若干話が逸れてしまいましたが、続きです。</p>\n<p>この記事を読むということは<a href=\"https://www.modern.ie/ja-jp\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Modern IE</a>からIE用のVMをすでにダウンロード済みの方が多いと思います。<br>\nが、今回は <strong>IEのVMを新規インストールしてそいつをテスト用に使う</strong> ための手順を書いていきます。<br>\nインストール済みのVMは使用しないので、ディスク容量に余裕が無い方はすでに入っているVMを消して頂いてから次へ進んで下さい。</p>\n<p><a href=\"http://xdissent.github.io/ievms/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http://xdissent.github.io/ievms/</a></p>\n<p>このツールを使用します。<br>\n今回はIEの8, 9だけが欲しい（IE10, 11は容量がでかいので入れない）ので、このようなコマンドになると思います。<br>\nディスク容量は<code>20GB</code>くらい空きがあればインストール出来ると思います。</p>\n<blockquote>\n<p>インストール中は<code>ダウンロードしてきたVM</code>と<code>Virtualboxに取り込んだVM</code>で <strong>本来の約２倍の容量を食う</strong> ので、だいたい20GBくらい、としています。</p>\n</blockquote>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">curl</span> -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh <span class=\"token operator\">|</span> <span class=\"token function\">env</span> <span class=\"token assign-left variable\">IEVMS_VERSIONS</span><span class=\"token operator\">=</span><span class=\"token string\">\"8 9\"</span> <span class=\"token function\">bash</span>\n<span class=\"token function\">find</span> ~/.ievms -type f <span class=\"token operator\">!</span> -name <span class=\"token string\">\"*.vmdk\"</span> -exec <span class=\"token function\">rm</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span> <span class=\"token punctuation\">\\</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>けっこう時間がかかるので、回線の太い環境で気長にお待ちください。</p>\n<p><code>IEVMS_VERSIONS</code>という環境変数にインストールしたいIEのバージョンを指定しています。<br>\nインストール後に、ダウンロードしてきたVMは不要なのでクリーンアップしています。<br>\nついでにゴミ箱も空にしておくと容量がだいぶ空きます。</p>\n<p>インストールが終わり、Virtualboxで下記のように表示されていればOKです。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 210px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/75b3d5d0e2903ee07338794345d39414/65ed1/e9e5157275790571849ed8e701768f1c.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61.67664670658682%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'248\\'%20viewBox=\\'0%200%20400%20248\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M14%209l1%2010c2%201%2055%202%2058%200%202-1%202-2%202-10V0H60C43%200%2043%200%2048%206c3%205%203%205-7%205-10-1-14-3-16-8-1-3-4-4-4-1s5%208%209%2010c8%204%2034%202%2040-2%201-2%203%200%203%202%200%205%200%205-29%205H17l-1-9c0-11-2-10-2%201m80%200v9h25c4-1%205-5%204-13V0h-12C98%200%2098%200%2098%209l-1%206-1-7-1-8-1%209m39-7v3c2%200%202%202%202%205%200%204%202%208%203%205l1-1%204-2c2-3%203-3%203%201%200%203%203%203%203-1l1-2%202%202c2%202%204%203%204%201l-3-4c-3-2-3-2%200-2%203-1%202-3-1-3-2%200-3%200-2-1l2-1%202-1-6-1-7%201%202%201%202%201-3%201c-3%200-4%202-1%203%203%200%203%200%201%202-4%203-4%203-4-3%200-7-2-8-5-4m28%200l-2%202-1%202%202%201%201%204c0%203%200%204%202%204V8h4c4%200%206%203%202%206-2%201-1%202%202%202%203-1%203-2%203-5s0-3%203-3l3-1-2-1c-4%200-4-2-1-3%204-2%202-3-4-3l-7%201%204%201c6%200%203%203-3%204-4%201-6-2-3-3%202-2%201-3-1-3l-2%202m-56%204c-3%202-3%202%203%207l5%203c-1-2%200-3%204-5%205-2%206-4%203-6-2-1-2-1-4%201-2%203-4%203-6%200-3-2-3-2-5%200M15%2045l-1%2031%201%2029h28l31-1c1-2%202-57%200-59s-57-1-59%200m31%204l3%202-4%204c-6%205-26%2014-27%2013h-2c-1%203%200%203%209%203%206%200%209%200%2012%202%207%203%207%202%209-5l3-9c3-9%202-12-3-12h-2l2%202m75%204c-1%201-2%203-1%205l-1%203c-2%201-1%206%201%207%204%203%2012%201%2012-4l-1-3-1-3c1-4%200-6-4-7-2%200-3%200-5%202m-18%200v9l1%207h6c7%200%208-2%202-3-4-1-5-4-2-4%204-1%204-2%201-3-4-1-4-4%200-4l4-1c0-3-11-3-12-1m63%202c1%209%203%2013%206%2014l2-1%201-5%201-2%201%204c3%208%207%204%2010-9%200-5-3-6-4-1-1%206-2%207-3%201s-5-5-6%200l-2%204-2-4c-1-5-5-6-4-1m47-2l2%204%202%204-2%203-2%204c0%202%203%201%204-1l3-2%202%202c1%202%206%203%206%201l-3-4-2-4%202-3c3-5%204-5%201-5l-3%202-2%203-2-3c-1-2-6-3-6-1m17%208c0%207%200%208%202%208l2-2c0-3%202-5%204-5s5-3%205-6-3-4-8-4h-5v9M56%2061l-3%2012c-2%206-2%207-4%205h-3c0%201-1%202-3%201-3-1-4-1-4%201H19c-3%201-3%204-1%204s8%208%209%2014c2%204%202%205%205%205s4%200%205-2c0-3%203-4%203-2l2%201c2-1%202-1%202%201s1%202%2013%202c14%200%2014%200%2015-6%201-3%201-3-2-3-2%200-3-1-1-2v-3c0-2%200-3%202-3%202-1%202-12-1-16l-3-6c0-3%200-3%202-3l3-1-2-2-6-2c-6-3-5-3-8%205m148-5h-4c-2%200-3%202-3%209%200%203%201%204%203%204s2%200%202-4%200-5%202-5%202%201%202%205c0%203%200%204%202%204%203%200%203-11%200-13h-4m78%201c-5%205-2%2012%206%2012l4-1-3-1-4-1c-1-2-1-2%201-2%206%200%208-3%204-7-3-3-5-3-8%200m15-1c-2%201-1%203%202%202l2%201-2%202c-3%200-5%203-5%206%201%202%202%202%207%202s6%200%205-1l-1-6c0-5-3-8-8-6m15%200h-3v7c0%205%200%206%202%206l2-4c0-4%202-8%203-6l2%205%201%205c2%200%202-1%202-5%200-6-2-9-5-9l-4%201M94%2089l1%2014c2%202%2026%201%2027%200l1-12c0-16%200-16-17-16H94v14m2%200c0%2014%201%2015%202%201%201-10%202-14%203-8l1%204h6l7%201v-4l1-4%201%204%201%204%201-3c2-6%201-6-12-7H96v12m40-7l-3%205c-1%201-1%203%201%203l1%205c0%207%200%207%206%204%205-4%205-4%205%200l2%202%201-2%201-3%201%201%205%202-3-4-3-3h2l3-1-3-1-3-1%202-1c2%200%204-2%204-5s-2-4-9-3h-5v4c0%203%200%204%202%204l2%201-3%201-3%201%203%201c3%200%203%201-1%203l-3%202v-6l1-7v-6l-3%204m30-2l-4%201c-3-1-4%201-1%202l3%201-2%203-3%203v2l2%205c0%203%200%204%202%204v-7h4l4%201c1%201%200%204-2%204-1%200-1%202%201%203s4-2%204-5%200-3%203-3l3-1-3-1c-3%200-3-2%200-3%203-2%201-4-5-3l-5-1c0-2%201-2%207-2%207%200%208-2%201-3l-6-1c-2-1-3-1-3%201M41%2083v13l3-2%201-2%201%202c1%202%203%203%204%201l-1-3c-1-3-1-4%201-6%201-4-1-5-3-2-2%202-2%202-3%200s-3-3-3-1m13%208c0%208%200%209%202%209l2-2%202-2c4%200%205-2%205-7%200-6-1-7-7-7h-4v9m50%201l-1%202a406%20406%200%200110%208c-1-2%200-3%204-5%205-2%206-4%203-6-2-1-2-1-4%201-2%203-4%203-6%200s-3-3-6%200m-89%2039v59l30%201h30v-59l-1-2H45l-30%201m40%203l2%202%206%202%207%203h3l-1-4c0-5-1-5-10-5-6%200-7%200-7%202m-9%201l2%202c0%203-26%2017-30%2017l-2%201c0%202%201%202%208%202%2013%200%2024%205%2017%207-1%201-1%201%201%203l2%203c0%204%201%204%203%202h2v3c-2%202-3%204-5%2012v2h13c14-1%2015-1%2015-6l1-3h-5c-5%200-6-1-6-5%201-3%202-3%206-3h5l-1-7-2-9-2-6c0-3%200-3%202-3%204%200%202-3-4-5-8-3-8-3-10%205-2%207-4%2010-4%207%200-2-2-2-2%200-1%202-4%201-4-1%206-17%206-20%201-20-2%200-2%200-1%202m58%203l-1%209v8h6l7-1c2-1-1-3-5-3s-4-3%200-3c3-1%203-3%200-4s-3-2%201-3c2%200%203-1%203-2%200-2-1-2-5-2l-6%201m16%201c-4%204-1%2010%204%2010%203%200%203%200%202%202l-4%201h-3c-1%202%200%203%204%203%207%200%2011-6%209-13-2-5-9-7-12-3m46-1c-1%201-1%204%201%209l1%205c1%205%205%204%207-1l1-4%201%203c1%204%202%205%205%205%202-1%206-16%205-17-1-2-4%201-4%204-1%204-3%204-3%200%200-6-5-7-7-1%200%205-1%205-3%200%200-3-3-5-4-3m48%200c-1%202%202%204%205%204s3%201%202%202c-2%202-6%208-6%2010%200%203%205%201%206-2l4-8c4-6%204-7-4-7l-7%201m-17%205v6c0%205%201%206%203%206s2%200%202-4c0-3%201-5%202-5%202%200%202%200%202%202-2%203%200%207%202%207s2-1%202-6l-1-7c-2-1-11-1-12%201m70%200c-3%202-2%208%200%2010s10%203%2010%201c0-1-1-2-4-2-3-1-4-2-1-3%205%200%205%200%205-2%200-5-7-8-10-4m14-1c-2%202-1%203%202%203h3l-2%202c-4%200-6%203-5%206%201%202%202%202%207%202%206%200%207-1%205-2l-1-5-1-6h-8m13%206c0%206%200%207%202%207l2-4c0-8%204-9%204-1%200%204%200%205%202%205s2-1%202-6c0-7-1-8-7-8l-5%201v6M48%20160l-2%204c0%203%203%204%204%202%201-1%202-2%205-2s4%201%202%202-5%2010-5%2013%200%203%203%203c2%200%203-1%204-6%200-3%202-7%204-9l2-6c0-3%200-3-6-3l-8-1c-1%200-2%200-3%203m46%2014v14c1%202%2018%203%2025%202%205%200%206-4%204-19-1-10-2-11-17-11H94v14m2-11l1%2024%201-11c1-10%203-16%203-8v4h14v-3l1-4%201%203c0%204%202%204%202%201%201-4%200-6-5-6H96m-77%203c-3%201-3%201-2%203l3%201%208%2016c0%202%207%204%208%202l5-18c-1-2-11-6-15-6l-7%202m118%200l-2%205c-3%205-3%205-1%205l1%205%201%206%207-4c2-2%203-1%203%201l1%203c2%200%202-1%202-2%200-3%201-4%203-1%201%201%205%202%205%200l-3-3c-3-2-3-2-1-3%203-1%203-2-1-3h-3l3-1c2%200%203-1%203-4%200-5%200-5-10-5-6-1-8%200-8%201m29-1l-4%201c-3%200-4%200-4%202l3%201%202%201-2%203c-3%203-4%206-2%206l1%203a1383%201383%200%20013%205l1-4c0-3%200-3%203-3%204%200%205%202%202%205-2%201%200%203%203%203%201-1%202-2%202-5s0-3%203-3c4-1%204-2%200-3h-2l2-2c3-2%202-4-4-5l-5-1h6l6-1c0-2-1-2-5-2l-6-1-1-1-2%201m-62%2012c-2%202-1%203%203%207%205%204%206%205%206%203-1-1%201-3%204-4%205-3%206-4%203-6-2-1-2-1-4%201-3%203-4%203-6%200-2-2-4-3-6-1\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/75b3d5d0e2903ee07338794345d39414/5251b/e9e5157275790571849ed8e701768f1c.webp 167w,\n/static/75b3d5d0e2903ee07338794345d39414/c7028/e9e5157275790571849ed8e701768f1c.webp 210w\"\n              sizes=\"(max-width: 210px) 100vw, 210px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/75b3d5d0e2903ee07338794345d39414/21521/e9e5157275790571849ed8e701768f1c.png 167w,\n/static/75b3d5d0e2903ee07338794345d39414/65ed1/e9e5157275790571849ed8e701768f1c.png 210w\"\n            sizes=\"(max-width: 210px) 100vw, 210px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/75b3d5d0e2903ee07338794345d39414/65ed1/e9e5157275790571849ed8e701768f1c.png\"\n            alt=\"After Installed IE VMS\"\n            title=\"After Installed IE VMS\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"ie用にkarmaの設定を変更\" style=\"position:relative;\"><a href=\"#ie%E7%94%A8%E3%81%ABkarma%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4\" aria-label=\"ie用にkarmaの設定を変更 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IE用にKarmaの設定を変更</h2>\n<p>やっとIEを使う準備が整いました。<br>\nKarmaの設定を変更し、VM内のIEでテストコードを実行できるようにします。</p>\n<p>まずはIE9を追加した差分が<a href=\"https://github.com/Leko/karma-ievm-seed/commit/704371e153609f8aff2ebffaf15173489a05e49c\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a>です。<br>\n念のためコマンドも載せておきます。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">npm</span> i -D karma-ievms</code></pre></div>\n<p><code>browsers</code>にVirtualboxでの表示名をそのまま指定しています。<br>\nこの値は変更可能なのかどうか試していません。設定をいじっていなければこれで動きます。</p>\n<p>先ほどと同じく<code>karma start</code>してみると、VMが起動して自動的にKarmaのテストページが開かれテストが実行されます。<br>\nちなみに<code>ctrl+c</code>などでKarmaを終了すると自動でVMのシャットダウンまでやってくれます。<br>\n<strong>どんだけ便利なんだよ。凄すぎる。</strong></p>\n<p>IE9で動くことを確認したので、本題のIE8も追加します。<br>\n差分は<a href=\"https://github.com/Leko/karma-ievm-seed/commit/898219f2f6cb982651396498e30aaa34e39741fd\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a>です。</p>\n<p><code>karma start</code>して <strong>IE8だけテストに失敗すれば成功です</strong>。<br>\nただのIE8ならArray#reduceは使えないはずなのでエラーになります。まずは失敗させることから始めましょう。</p>\n<p>動かないことが確認できたところで、es5のshimを入れてIE8でもテストが通るようにしてみます。</p>\n<h2 id=\"karma-es5-shimを入れてie8のテストを通す\" style=\"position:relative;\"><a href=\"#karma-es5-shim%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6ie8%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E9%80%9A%E3%81%99\" aria-label=\"karma es5 shimを入れてie8のテストを通す permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>karma-es5-shimを入れてIE8のテストを通す</h2>\n<p><strong>IE8は非対応、と言いづらいけどes5使えないのはつらみなので、shim入れれば動くよ</strong> 程度にIE8対応をしたい方向けの対応です。<br>\nes5-shimは、ざっくり言うとIE8などes5のメソッドに対応していないブラウザ向けのpolyfillです。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">npm</span> i -D karma-es5-shim</code></pre></div>\n<p>Karmaの設定ファイルも合わせて<a href=\"https://github.com/Leko/karma-ievm-seed/commit/1b3ccd382332b7f7b5d0e3d1b4d46640a99a6cc1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a>のように編集しておきます。</p>\n<p>あらためて<code>karma start</code>してみると、IE8もテストに通ったと思います。<br>\nこれでIE9以上が対象だけど、shimを入れればIE8対応、とうたえるようになりました。</p>\n<h2 id=\"まとめ\" style=\"position:relative;\"><a href=\"#%E3%81%BE%E3%81%A8%E3%82%81\" aria-label=\"まとめ permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>まとめ</h2>\n<p>最近のjsの開発ツール周りの進化速度が早すぎて全然ついていけていない私ですが、<br>\n少しずつインプットしつつアウトプットしつつ時代に食らいついています。</p>\n<p>この速度でのツールの進化はjsの需要が高まっているからこそだと思うので、jsが必要とされていることに嬉々としています。</p>\n<p>ちなみに、本格的に色々なブラウザ・OS・バージョンでテストを行いたい場合には<a href=\"https://saucelabs.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">SauceLabs</a>を使ったほうが良いと思います。<br>\nただし、ちょろっと試しに使ってみた感じだと <strong>ものすごく遅い</strong> ので、CI回したり、確実な品質担保をしたいとき向けといった印象があります。</p>\n<p>とりあえずIEに最低限対応していることをテスト駆動で書いていくだけなら、今回の記事のようにローカル環境を活用したほうがスピーディにことが済みそうです。 Sauce Labsでのテストに慣れてきたら、Travis CIと組み合わせて、PR時に各ブラウザのテストを走らせる方法を書きたいと思います。</p>","timeToRead":12,"frontmatter":{"title":"Karmaを使ってIEのテストをMacから行う","tags":["ES5","Jasmine","JavaScript","Karma"],"date":"May 03, 2015","featuredImage":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='135'%20viewBox='0%200%20400%20135'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2068v67h401V0H0v68m353-45l-10%202-16%204c-14%202-25%2010-31%2022-4%209-4%209%203%203%2011-11%2018-15%209-5-3%203-8%208-10%2012l-5%206-11-5-12-5-27%2012v15l1%2015%206%204c5%204%206%204%205%207%200%202%201%204%204%207%204%204%2010%206%2012%204l10-3%204-8c1-2%201-2-3%201-4%205-9%207-10%207s4-5%2011-10c12-9%2013-10%2013-14l1-4%202%203%207%208%205%205-4%202-9%201c-7%201-10%202-6%204%204%201%2011-1%2017-3l5-3%206%202a42%2042%200%200052-25l-10-1h-11l-4%204c-9%209-23%207-30-3l-2-6v-3h59v-6c0-6-2-15-4-18v-5c4-10%203-17-2-21-4-2-11-3-15-2m5%205l-9%203%205%203%209%208%205%205c1%200%203-11%202-13-2-5-7-8-12-6M46%2048c-1%205%206%2037%209%2041%203%202%205%200%205-3%200-6%202-6%206-1%203%204%204%204%2010%204h7l-7-10-7-12%206-11c7-10%207-11-2-11-4%200-5%200-7%203-3%204-6%204-6%200%200-2-1-3-7-3s-6%200-7%203m278%201c-5%203-9%208-9%2012v3h37l-1-3c-1-11-17-18-27-12M94%2065a2977%202977%200%2001-3%2017l3-3c1-3%201-4%207-4h6l1%203c1%204%204%205%204%203l-4-15-3-13h-8l-3%2012m28%203c0%2012%200%2014%202%2014l1-4c0-6%201-7%205-7%203%200%203%200%206%206%201%203%203%205%204%205%202%200%202%200%200-6l-3-5%203-3c3-3%203-9%200-13-3-2-4-2-10-2h-8v15m31%200c0%2012%200%2014%202%2014l1-8%201-11c0-3%201-3%202%202%206%2015%206%2016%208%2016s2-1%208-16c1-5%202-5%202-2l1%2011c0%206%200%208%202%208l1-14V53h-3c-3%200-3-1-8%2014l-3%208-4-11c-4-11-4-11-7-11h-3v15m42-1c-5%2016-4%2015-3%2015l3-4%201-3h6c6%200%206%201%207%204l3%203c2%200%202%200-2-14l-3-11c-1-4-1-4-5-4h-4l-3%2014m-70-10v6c0%204%201%205%205%205%206%200%208-1%208-6l-1-5c-2-2-11-1-12%200m134%207l-9%205%2010%206%2010%206%2010-6%2010-6-9-4c-11-5-11-5-22-1M27%2065l6%2018%203-2c2-3%203-3%208%202s5%205%201-9l-2-9-2%202c-4%203-5%203-10-2l-4-4v4m235%200l-8%204%2016%209%2016-9-3-2-8-3-5-3-8%204m-15%2020l1%2010%209%207%209%207V88l-9-5-10-6v8m39-5c-6%204-10%205-5%202%203-3%200-2-5%201l-3%203%201%2014v9l10-7c7-6%209-8%209-10l1-9c0-8%200-8-8-3'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":2.9557522123893807,"src":"/static/d341737d6a8a580c3095970a19b66de6/32d53/featured-image.png","srcSet":"/static/d341737d6a8a580c3095970a19b66de6/1ec58/featured-image.png 334w,\n/static/d341737d6a8a580c3095970a19b66de6/32d53/featured-image.png 614w","srcWebp":"/static/d341737d6a8a580c3095970a19b66de6/9b99b/featured-image.webp","srcSetWebp":"/static/d341737d6a8a580c3095970a19b66de6/cd98f/featured-image.webp 334w,\n/static/d341737d6a8a580c3095970a19b66de6/9b99b/featured-image.webp 614w","sizes":"(max-width: 614px) 100vw, 614px"}}}}}},"pageContext":{"slug":"/how-to-test-ie-with-karma/","previous":{"fields":{"slug":"/how-to-implement-fulltext-search-with-fuelphp/"},"frontmatter":{"title":"FuelPHPでInnoDBの全文検索を利用してみる","tags":["PHP","FuelPHP","MySQL"]}},"next":{"fields":{"slug":"/introduction-of-golang/"},"frontmatter":{"title":"Goに入門してRedis+PostgresなアプリをHerokuにデプロイするまで","tags":["Ansible","Gin","Go","Heroku","PostgreSQL","Redis","Vagrant"]}}}},
    "staticQueryHashes": ["2585454260","2954598359"]}