UI自動化テストのHeadless browserコンテナ化
6033 ワード
目的
PhantomJS
を使用しないのか、ProtractorはPhantomJS
を使用してWe recommend against using PhantomJS for tests with Protractor. There are many reported issues with PhantomJS crashing and behaving differently from real browsers.
Docker
インストール
pull
を使用してdockerミラーprotractor-headless
を取得します.このプロセスは遅くなり、docker hubアドレスを辛抱強く待ちます.https://hub.docker.com/r/webnicer/protractor-headless/git hubアドレス:https://github.com/jciolek/docker-protractor-headless docker pull webnicer/protractor-headless
E 2 EのProtractor
可視化運転E 2 Eテスト
Protractor
npm install -g protractor
webdriver-manager
webdriver-manager update
conf.js
プロファイル// conf.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
specs: ['**/**.js'],
capabilities: {
browserName: 'chrome'
},
jasmineNodeOpts: {
showColors: true,
}
};
test-spec.js
テストスクリプトdescribe('angularjs homepage todo list', function() {
it('should add a todo', function() {
browser.get('https://angularjs.org');
element(by.model('todoList.todoText')).sendKeys('write first protractor test');
element(by.css('[value="add"]')).click();
var todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write first protractor test');
// You wrote your first test, cross it off the list
todoList.get(2).element(by.css('input')).click();
var completedAmount = element.all(by.css('.done-true'));
expect(completedAmount.count()).toEqual(2);
});
});
E2E
:protractor conf.js
を実行すると、chromeブラウザが起動し、コンソールに対応する実行結果➜ protractorHeadless git:(master) ✗ protractor conf.js
[17:23:41] I/hosted - Using the selenium server at http://127.0.0.1:4444/wd/hub
[17:23:41] I/launcher - Running 1 instances of WebDriver
Started
.
1 spec, 0 failures
Finished in 19.912 seconds
[17:24:01] I/launcher - 0 instance(s) of WebDriver still running
[17:24:01] I/launcher - chrome #01 passed
Headless運転E 2 Eテスト
#!/bin/bashdocker run -it --privileged --rm --net=host -v /dev/shm:/dev/shm -v $(pwd):/protractor webnicer/protractor-headless $@
protractor.sh --version
を入力してバージョン番号を表示し、調製に成功したことを確認します.必ずdockerサービスconf.js
ファイルの内容を変更し、dockerミラー内部のselenium server
// conf.js
exports.config = {
framework: 'jasmine',
// seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
specs: ['**/**.js'],
capabilities: {
browserName: 'chrome'
},
jasmineNodeOpts: {
showColors: true,
}
};
protractor
のスクリプトルートディレクトリに入り、protractor.sh conf.js
を実行し、chromeブラウザを起動せず、コンソールに対応する実行結果➜ protractorHeadless git:(master) ✗ protractor.sh conf.js
[09:31:08] I/local - Starting selenium standalone server...
[09:31:08] I/launcher - Running 1 instances of WebDriver
[09:31:09] I/local - Selenium standalone server started at http://192.168.65.2:37226/wd/hub
Started
.
1 spec, 0 failures
Finished in 11.403 seconds
[09:31:23] I/local - Shutting down selenium standalone server.
[09:31:23] I/launcher - 0 instance(s) of WebDriver still running
[09:31:23] I/launcher - chrome #01 passed
詳しく説明する
Dockerfileファイル
FROM node:slim
MAINTAINER Yuanjie
WORKDIR /tmp
RUN npm install -g protractor mocha jasmine && \
webdriver-manager update && \
apt-get update && \
apt-get install -y xvfb wget openjdk-7-jre && \
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
dpkg --unpack google-chrome-stable_current_amd64.deb && \
apt-get install -f -y && \
apt-get clean && \
rm google-chrome-stable_current_amd64.deb && \
mkdir /protractor
ADD protractor.sh /protractor.sh
# Fix for the issue with Selenium, as described here:
# https://github.com/SeleniumHQ/docker-selenium/issues/87
ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
WORKDIR /protractor
ENTRYPOINT ["/protractor.sh"]
ミラーのプライマリ・プロビジョニングの説明
FROM node:slim
MAINTAINER Yuanjie
WORKDIR /tmp
RUN npm install -g protractor mocha jasmine && \
webdriver-manager update && \
apt-get update && \
apt-get install -y xvfb wget openjdk-7-jre && \
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
dpkg --unpack google-chrome-stable_current_amd64.deb && \
apt-get install -f -y && \
apt-get clean && \
rm google-chrome-stable_current_amd64.deb && \
mkdir /protractor
ADD protractor.sh /protractor.sh
# Fix for the issue with Selenium, as described here:
# https://github.com/SeleniumHQ/docker-selenium/issues/87
ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
WORKDIR /protractor
ENTRYPOINT ["/protractor.sh"]
node:slim
protractor,mocha,jasmine
:E 2 Eテスト実行に必要なwebdriver-manager update
wget
を使用してchromeのdeb
バージョンwget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg
を使用してchrome Xvfb
の運転パラメータを追加:ADD protractor.sh /protractor.sh
、protractor.sh
ファイル内容#!/bin/bash
xvfb-run --server-args='-screen 0 1280x1024x24' protractor $@
ソースアドレス:https://github.com/aimer1124/protractor-headless