私は、Web サイトがユーザーに対して正しく動作していることを確認する機能テスト システムを構築しようとしています。ネストされた関数コールバックのヒープなしでシンプルで簡潔なテストを提供するフレームワークを取得するために、一連の Node.js モジュールとヘルパーをまとめました。Promise がそれを提供できると信じているため、私のpackage.json
ファイルは次のようになります。
"dependencies": {
"chai-as-promised": "^4.3.0",
"grunt": "^0.4.5",
"grunt-webdriver": "^0.4.8"
}
私Gruntfile.js
はこのように見えます:
module.exports = function(grunt) {
grunt.initConfig({
webdriver: { // for use with webdriver.io
options: {
desiredCapabilities: {
browserName: 'phantomjs' // No Xvfb required
}
},
chrome: {
tests: ['chrome/*.js'],
options: {
desiredCapabilities: {
browserName: 'chrome'
}
}
},
},
});
grunt.loadNpmTasks('grunt-webdriver');
grunt.registerTask('default', ['webdriver']);
};
最後に、私のテストケースはchrome/login.js
次のようになります。
'use strict';
var chai = require('chai'),
chaiAsPromised = require('chai-as-promised'),
assert;
chaiAsPromised.transferPromiseness = browser.transferPromiseness;
chai.use(chaiAsPromised);
assert = chai.assert;
describe('login test', function () {
it('verifies user can log in', function(done) {
browser
.url('https://localhost/')
.setValue('#userauth_username','foo')
.setValue('#userauth_password',"password")
.submitForm('#form_users_login')
.then(function(){
browser.getText('#auth-user-id', function(err, value){
console.log(value);
});
assert.becomes(browser.getText('#auth-user-id'), 'foo');
})//.call(done);
});
});
コマンド ラインで実行するgrunt webdriver:chrome
と、Chrome が起動し、Web サイトにログインします。「auth-user-id」スパンは、ログイン後にユーザーの ID を正しく表示していますが、何らかの理由browser.getText()
でそれを返さないため、テストは失敗しています。.pause(100)
Chrome でページを操作する時間を確保するために の後にを追加しようとした.submitForm()
ので、テスト ケースの問題であることがわかりました。
私は何を間違っていますか?