PhantomJSの代わりとしてGoogle Chromeをヘッドレスで使う。のではなくChromiumを使う。
PhantomJSの開発が止まってしまった
PhantomJSブラウザの開発が止まってしまいました。
npmでさくっと導入できるヘッドレスなブラウザで、
テストの時に便利だったのですけれどね。
Google Chromeをヘッドレスモードで使う?
そこで、代わりに、Google Chromeを
ヘッドレスモードで使おうっていう考えがあります。
ただー。
PhantomJSはnpm installでインストールできた。
Google Chromeはインストールが面倒くさい。
Google Chromeのインストールは、Macなら次のURLからインストールする
Ubuntuなら、こんなインストール手順になりますかね。
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb sudo apt-get update sudo apt-get -f install
そこでChromiumだ
npmでChromiumをインストールする
npm install --save-dev @taku-o/chromium
とりあえず、CHROMIUM_VERSIONでバージョン指定できるようにしておいた。
が、どうやってバージョン指定できるようにしようかなぁ、ってのは
迷いどころである。
CHROMIUM_VERSION=76 npm install --save-dev @taku-o/chromium
これはWebdriverIOのテストコードなのですけれど、
おおよそChromeを使うように設定を組んでおいてから、
実行時に、Chromeの代わりにChromiumのパスを渡す感じになりますな。
# wdio.conf.js抜粋 var chromium = require('@taku-o/chromium'); exports.config = { ... capabilities: [{ browserName: 'chrome', 'goog:chromeOptions': { args: ['--headless', '--disable-gpu'], binary: chromium.path, // ←←←←←←←←←← ここに注目 }, }], ...
サンプルコードと手順
mkdir webdriverio_chromium-test-samples cd webdriverio_chromium-test-samples npm init mkdir -p ./test/specs npm install --save-dev @wdio/cli @wdio/cli @wdio/local-runner @wdio/mocha-framework @wdio/spec-reporter @wdio/sync wdio-chromedriver-service chromedriver npm install --save-dev @taku-o/chromium # WebdriverIOのテストコード作成 vim test/specs/basic.js # テストの設定作成 vim wdio.conf.js # テスト実行 ./node_modules/.bin/wdio wdio.conf.js
- 実行結果
Execution of 1 spec files started at 2019-09-01T11:32:10.850Z 2019-09-01T11:32:10.886Z INFO @wdio/cli:Launcher: Run onPrepare hook Starting ChromeDriver 76.0.3809.126 (d80a294506b4c9d18015e755cee48f953ddc3f2f-refs/branch-heads/3809@{#1024}) on port 4444 Only local connections are allowed. Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code. 2019-09-01T11:32:11.651Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js [0-0] RUNNING in chrome - /test/specs/basic.js [0-0] 2019-09-01T11:32:12.089Z INFO @wdio/local-runner: Run worker command: run [0-0] 2019-09-01T11:32:12.145Z INFO webdriver: [POST] http://127.0.0.1:4444/session [0-0] 2019-09-01T11:32:12.146Z INFO webdriver: DATA { capabilities: { alwaysMatch: { browserName: 'chrome', 'goog:chromeOptions': [Object] }, firstMatch: [ {} ] }, desiredCapabilities: { browserName: 'chrome', 'goog:chromeOptions': { args: [Array], binary: '/Users/taku-o/Desktop/webdriverio_chromium-test-samples/node_modules/@taku-o/chromium/lib/chromium/chrome-mac/Chromium.app/Contents/MacOS/Chromium' } } } [0-0] 2019-09-01T11:32:12.879Z INFO webdriver: COMMAND navigateTo("https://webdriver.io/") [0-0] 2019-09-01T11:32:12.880Z INFO webdriver: [POST] http://127.0.0.1:4444/session/a296b1e791776ba38f9de341c0985c1e/url [0-0] 2019-09-01T11:32:12.881Z INFO webdriver: DATA { url: 'https://webdriver.io/' } [0-0] 2019-09-01T11:32:14.932Z INFO webdriver: COMMAND getTitle() [0-0] 2019-09-01T11:32:14.933Z INFO webdriver: [GET] http://127.0.0.1:4444/session/a296b1e791776ba38f9de341c0985c1e/title [0-0] 2019-09-01T11:32:14.938Z INFO webdriver: RESULT WebdriverIO · Next-gen WebDriver test framework for Node.js [0-0] 2019-09-01T11:32:14.940Z INFO webdriver: COMMAND deleteSession() [0-0] 2019-09-01T11:32:14.941Z INFO webdriver: [DELETE] http://127.0.0.1:4444/session/a296b1e791776ba38f9de341c0985c1e [0-0] PASSED in chrome - /test/specs/basic.js 2019-09-01T11:32:15.105Z INFO @wdio/cli:Launcher: Run onComplete hook "spec" Reporter: ------------------------------------------------------------------ [chrome mac os x #0-0] Spec: /Users/taku-o/Desktop/webdriverio_chromium-test-samples/test/specs/basic.js [chrome mac os x #0-0] Running: chrome on mac os x [chrome mac os x #0-0] [chrome mac os x #0-0] webdriver.io page [chrome mac os x #0-0] ✓ should have the right title [chrome mac os x #0-0] [chrome mac os x #0-0] 1 passing (2.1s) Spec Files: 1 passed, 1 total (100% completed) in 00:00:04
おわり
一気にやっちゃったけど、