55198


実現したいことは下記の内容です。

複数のページをウェブページが存在し、ヘッダーにはナビメニューがあります。  
ナビメニューには、`result` `conversion` `summary` `ad`というボタンがあり、それぞれにリンクが貼られています。  
そのリンクに従いページを遷移するというごく一般的なページです。

そこで実現したいテストですが、  
ナビメニューにあるそれぞれのリンク先ページは一つ一つ別ファイルで構成されており、何らかの修正が必要になった場合はそれらのファイルをそれぞれ修正する必要があります。

この時、修正したものが正しく動いているかテストを行うわけですが、考えているテストの内容は以下の通りです。

例） `result`ページを修正した場合（ファイル名：`result.vue`）

  1. トップページを開く
  2. ナビメニューから`result`を選択しクリックする
  3. `result`ページに遷移する

例） `summary`ページを修正した場合（ファイル名：`summary.vue`）

  1. トップページを開く
  2. ナビメニューから`summary`を選択しクリックする
  3. `summary`ページに遷移する

このように修正したファイル毎にテストを実行したいわけですが、テストファイルは1つにしたいのです。

[code]

    'case1': function test(browser) {
      const devServer = ウェブページのURL;
      browser
        .url(devServer)
        .waitForElementVisible('#app', 5000)
        .click('#result')
        .waitForElementVisible('#pege-result', 5000)
        .end();
    }
    
[/code]

このようなファイルを作ったとして、`.click('#result')`の、`#result`部分を修正したファイルに応じて`.click('#summary')`にしたりしたいのです。  
これを`nightwatch`の実行コマンドでオプションとして指定し、実行できないかと考えたのですがそういったことは可能でしょうか？

色々調査してみましたが解決できるような記事にたどり着けずでして...

実行コマンドのオプションというものにこだわっている訳ではなく、実現できるなら他の方法でもいいのですが、どなたか知見をお貸しいただけますでしょうか。


CC BY-SA 4.0
2019-05-22T13:52:49.077
55178
2019-05-23T11:37:47.043
2019-05-22T13:58:27.833
32876
32876
question
javascript
nightwatchの実行コマンドについて


自分で試したわけではないですが、以下のように対象となるDOMのIDをループで回すというのはどうでしょうか？

[code]

    'case1': function test(browser) {
      const devServer = ウェブページのURL;
      ['#result', '#conversion', '#summary', '#ad'].forEach(function(domId) {
        browser
          .url(devServer)
          .waitForElementVisible('#app', 5000)
          .click(domId)
          .waitForElementVisible('#pege-result', 5000)
          .end();
      });
    }
    
[/code]

（なお、質問内容とは直接関係ありませんが、テストなら`assert`で確認した方が良いのではないでしょうか）


CC BY-SA 4.0
2019-05-23T11:37:47.043
55198
2019-05-23T11:37:47.043
9608
55178
answer