ProtractorをYeomanが製造した足場と統合したいと思います。私はチュートリアルに従いましたが、古いscenario-runner
はe2eテストのセットアップに使用されました(grunt
経由)。
足場をアップグレードし、代わりに分度器を使用したいと思います。
何かご意見は?
protractor
からnpm
およびgrunt-protractor-runner
をインストールします。
npm install protractor grunt-protractor-runner --save-dev
分度器の構成ファイル(protractor.conf.js
)を作成し、specs
およびbaseUrl
をテストファイルとテストサーバーに変更します。
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['test/e2e/*_test.js'],
baseUrl: 'http://localhost:9001' //default test port with Yeoman
}
Gruntfile.js
を更新し、karmaタスクの後に次を追加します。
protractor: {
options: {
keepAlive: true,
configFile: "protractor.conf.js"
},
run: {}
}
テスト対象の分度器タスクを追加する
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor:run'
]);
Seleniumサーバーをダウンロードして起動します。
node_modules/protractor/bin/webdriver-manager update
node_modules/protractor/bin/webdriver-manager start
(Windowsの場合:)
node node_modules/protractor/bin/webdriver-manager update
node node_modules/protractor/bin/webdriver-manager start
package.json
を更新し、"devDependencies"
の後に次を追加します。これにより、npm install
の後にコマンドが実行されるため、毎回覚えておく必要はありません。
"scripts": {
"install": "node node_modules/protractor/bin/webdriver-manager update"
}
Gruntを使用してテストを実行する
grunt test
分度器でサーバーを起動する場合は、削除します
seleniumAddress: 'http://localhost:4444/wd/hub',
protractor.conf.js
から、grunt test
を実行すると、テスト中にスタンドアロンのSeleniumインスタンスが起動し、テストスイートの実行後に終了します。
既存の回答に追加する1つのこと。 Seleniumサーバーを自動的に起動する場合は、seleniumServerJarとchromeDriver(Chromeを使用している場合)の場所も指定する必要があります。そうしないと、手動でSeleniumサーバーを起動するまでテストが機能しません(「webdriver-最初にコマンドラインから「マネージャーの更新」):
protractor: {
options: {
keepAlive: false,
configFile: "test/config/protractor.conf.js",
noColor: true, // If true, protractor will not use colors in its output.
args: {
seleniumServerJar: 'node_modules/protractor/Selenium/selenium-server-standalone-2.39.0.jar',
chromeDriver: 'node_modules/protractor/Selenium/chromedriver.exe'
}
},
run: {
}
},
@ user2172816 の回答で言及しているように、分度器の設定からseleniumAddress: 'http://localhost:4444/wd/hub'
を省略すると、通常分度器がSeleniumインスタンスを開始します。
代わりに、 grunt-protractor-webdriver を使用してSeleniumを起動できます:
1)インストールして保存grunt-protractor-webdriver
npm install grunt-protractor-webdriver --save-dev
2)以下をGrunt定義関数に追加します。
grunt.loadNpmTasks('grunt-protractor-webdriver');
3)次の分度器Webdriverタスクの例を追加します。
protractor_webdriver: {
start: {
options: {
path: 'node_modules/protractor/bin/',
command: 'webdriver-manager start'
}
}
}
4)分度器を実行する前に、test
タスクにprotractor_webdriver
を追加します。
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor_webdriver',
'protractor:run'
]);