LoginSignup
0
0

More than 5 years have passed since last update.

Nightwatch.jsでaxiosを使って外部APIを叩いた結果を利用する

Last updated at Posted at 2019-01-10

この記事のターゲット

  • Nightwatch.js使い始め
  • 正直Node.jsよくわからない
  • Nightwatchから外部にhttpリクエストを出したい
  • なんとなくrequestよりaxiosの方が名前がかっこいい

Nightwatch.jsとは

いわゆるE2E(end-to-end)テストフレームワーク。
ブラウザの操作とアサーションのメソッドをNode.jsで提供してくれる。
Nightwatch.jsの導入についてはこちら
WebアプリのUI自動化テストでNightwatch.jsを試す

axiosとは

JavaScriptのPromiseベースHTTP通信ライブラリ。
もちろんNode.jsでも動く。
Ajaxなどが簡単に実装できる。

本題

今回の想定ケースは以下の通り。

  1. ブラウザで特定サイトにアクセスする
  2. 画面から特定の文字列を取り出し、APIへのリクエストパラメータとする
  3. APIからの返り値を画面のフォームに入力する

axios

module.exports = {
    'ログインテスト': (client) => {
        client
            //1. ブラウザで特定サイトにアクセスする
            .url('__loginUrl__')
            //2. 画面から特定の文字列を取り出し、APIへのリクエストパラメータとする
            .getValue('__取得したパラメータ__', function(result) {
                paramId = result.value;
                //apiリクエスト関数
                api(paramId, client);
            })
            //入力フォームにパラメータをセット
            .setValue('input[name=user_id]', 'hogehoge')
            .setValue('input[name=password]', 'fugafuga')
            //画面遷移を待つ
            .pause(3000)
            .verify.containsText('body', 'ログイン成功')
            .click('#logout > a')
            //画面遷移を待つ
            .pause(3000)
            .verify.containsText('body', 'ログアウト成功')
            .end()
    }
}
function api(param, client) {
    //axiosを読み込む
    const axiosBase = require('axios');
    //apiのベースURLを設定
    const axios = axiosBase.create({
        baseURL: '__apiBaseUrl__',
        timeout: 100000,
        headers: ''
    });
    //getでAPIを叩く
    axios.get('__apiEndPoint__', {
        params: {
            user_id: userId,
            password: Password,
            param_id: paramId,
        }
    })
    .then(function(response) {
        console.log('SUCCESS!!');
        //3. APIからの返り値を画面のフォームに入力する
        client.setValue('input[name=param]', [response.data,client.Keys.ENTER])
    })
    .catch(function(error) {
        console.log('ERROR!!');
    });
}

所感

axios、名前かっこいいですよね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0