ついにNightwatch v2.0の最初のベータ版をリリースしました。今後のベータ版は、NPMのnextタグで段階的に公開されます。インストールするには、以下のコマンドを実行してください。

npm i nightwatch@next

今後数週間で、ガイドセクションにさらにページを追加し、新しいAPIのドキュメントを追加して、ドキュメントの更新を完了する予定です。

新機能

前回のアルファ版からの重要な変更点については、リリースノートをご覧ください。

また、最初のアルファ版リリースを発表したブログ記事を再確認することで、新機能と機能強化の一覧をより深く理解することができます。ここでは、最も重要なものを簡単にまとめておきます。

新しいユーザーアクションAPI、Chrome DevTools Protocolのサポート、WebDriver BiDi

v2の主な変更点の1つは、ブラウザドライバとの通信に公式のselenium-webdriverライブラリを使用するように、基盤となるアーキテクチャが完全に作り直されたことです。

これは、クロスブラウザの統合が改善され、DOM要素の処理がより信頼できるようになることを意味します。これに関する変更点の詳細は、アルファ版に関する以前のブログ記事をご覧ください。

NightwatchでCucumberJSを使用するための新しい統合テストランナー

前回のv2.0.0-alpha.3では、CucumberJS用の新しい統合テストランナーと、Mocha v9に基づくアップグレードされたMochaテストランナーを発表しました。このバージョンにおけるもう1つの注目すべきアップデートは、新しいプログラムAPIです。

Nightwatch 2でCucumberJsを使用する場合、Cucumberライブラリ自体(バージョン7.3以降)以外に、他のプラグインは必要ありません。Nightwatch 2でCucumberJsを使用する方法の詳細と例は、バンドルされているexamplesフォルダにあります。

これらの例は、新しいプロジェクトですぐに試すことができます。自動生成されたNightwatch設定ファイルには、必要な設定が含まれています。

npx nightwatch --env cucumber-js

詳細はv2.0.0-alpha.3をご覧ください。

バンドルされている例も更新しましたので、新しいNightwatch 2の機能をよく理解するために、必ず確認してください。

AngularJSのホームページで利用可能なサンプルのto-doアプリを使用する例を次に示します。


describe('angularjs homepage todo list', function() {

  // using the new element() global utility in Nightwatch 2 to init elements
  // before tests and use them later
  const todoElement = element('[ng-model="todoList.todoText"]');
  const addButtonEl = element('[value="add"]');

  it('should add a todo using global element()', function() {
    // adding a new task to the list
    browser
      .navigateTo('https://angularjs.org')
      .sendKeys(todoElement, 'what is nightwatch?')
      .click(addButtonEl);

    // verifying if there are 3 tasks in the list
    expect.elements('[ng-repeat="todo in todoList.todos"]').count.to.equal(3);

    // verifying if the third task if the one we have just added
    const lastElementTask = element({
      selector: '[ng-repeat="todo in todoList.todos"]',
      index: 2
    });

    expect(lastElementTask).text.to.equal('what is nightwatch?');

    // find our task in the list and mark it as done
    lastElementTask.findElement('input', function(inputResult) {
      if (inputResult.error) {
        throw inputResult.error;
      }

      const inputElement = element(inputResult.value);
      browser.click(inputElement);
    });

    // verify if there are 2 tasks which are marked as done in the list
    expect.elements('*[module=todoApp] li .done-true').count.to.equal(2);
  });
});

フィードバックをお寄せください

ベータ版の詳細については、v2.0.0-beta.1リリースノートをご覧ください。 Github Issuesでバグを報告するか、Discussionsページで一般的なフィードバックをお寄せください。ご協力ありがとうございます!

(Twitter、Facebook、コピーリンクアイコン)リンクがコピーされました!