web-dev-qa-db-ja.com

Gruntを介した分度器とYeomanの統合

ProtractorをYeomanが製造した足場と統合したいと思います。私はチュートリアルに従いましたが、古いscenario-runnerはe2eテストのセットアップに使用されました(grunt経由)。

足場をアップグレードし、代わりに分度器を使用したいと思います。
何かご意見は?

40
user2733090
  1. protractorからnpmおよびgrunt-protractor-runnerをインストールします。

    npm install protractor grunt-protractor-runner --save-dev
    
  2. 分度器の構成ファイル(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
    }
    
  3. Gruntfile.jsを更新し、karmaタスクの後に次を追加します。

    protractor: {
      options: {
        keepAlive: true,
        configFile: "protractor.conf.js"
      },
      run: {}
    }
    
  4. テスト対象の分度器タスクを追加する

    grunt.registerTask('test', [
      'clean:server',
      'concurrent:test',
      'autoprefixer',
      'connect:test',
      'karma',
      'protractor:run'
    ]);
    
  5. 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
    
  6. package.jsonを更新し、"devDependencies"の後に次を追加します。これにより、npm installの後にコマンドが実行されるため、毎回覚えておく必要はありません。

    "scripts": {
      "install": "node node_modules/protractor/bin/webdriver-manager update"
    }
    
  7. Gruntを使用してテストを実行する

    grunt test
    

分度器でサーバーを起動する場合は、削除します

seleniumAddress: 'http://localhost:4444/wd/hub',

protractor.conf.jsから、grunt testを実行すると、テスト中にスタンドアロンのSeleniumインスタンスが起動し、テストスイートの実行後に終了します。

85
user2172816

既存の回答に追加する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: {

        }
    },
10
Always Learning

@ 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'
]);
5
a darren