Cypress/support /commands.jsファイルに次のカスタムコマンドを作成しました。
Cypress.Commands.add("login", (username, password) => {
cy.request({
method: 'POST',
form: true,
url: '/test/login/',
body: {'username': username, 'password': password}
})
})
ログイン機能をこのカスタムコマンドに移動する前に、テストに合格してログインが機能するようにしました。仕様でcy.login(testuser、testpwd)を使用して呼び出していますが、次のエラーメッセージが表示されます。TypeError:cy.loginは関数ではありません。 docs say テストファイルが評価される前に/cypress/support/commands.jsが読み込まれるので、そこにカスタムコマンドを配置するだけで、コマンドが使用可能になると思いました。ローカル(GUI)テストランナーを介してテストを実行しています。
index.js
内のすべてのコードと参照モジュールは、テストファイルの前にロードされます。したがって、commands.js
ファイルでindex.js
を参照(必須)する必要があります。ただし、commands.js
モジュールをテストファイルに直接インポートすることはできますが、その場合はすべてのテストファイルに含める必要があります。推奨されるアプローチは、それをindex.js
ファイルに含めることであり、テストファイルで明示的に参照することを心配する必要はありません。
@Dinesh Kumarの優れた answer を拡張するには、cypress.json
内でデフォルトのサポートファイル(この場合は残念な命名スキーム)のサポートを無効にしていないことも重要です。行:supportFile: false
。
cypress.json
がある場合は、その行を削除します。デフォルトのパスcypress/support/index.js
を使用して満足できない場合は、別のパスを指定することもできます。
support
フォルダーにあるcommands.jsファイルを使用したindex.jsの操作:
// index.js
const customCommands = require('./commands.js')
module.exports = {
commands: customCommands
}
そして、設定を再確認してください。
// cypress.json
{
"baseUrl": "http://demo.your-domain.test",
"supportFile": false, <-- delete this if present
...
}
行を置くのに役立つかもしれませんimport './commands.js/';
index.jsに