0

私は、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()ので、テスト ケースの問題であることがわかりました。

私は何を間違っていますか?

4

1 に答える 1