なっく日報

技術やら生活やらのメモ

TestCafeでSSOなシステムにログインする

前書き

面倒な社内システムの作業の自動化に

github.com

を使っているのですが、SSOな環境でログイン後にうまく動かなかったのでメモ。

解決法

devexpress.github.io

の公式ドキュメントをよくよく読んで見ると、

TroubleshootingTest Actions Fail After Authentication にそのものズバリな項目が。

devexpress.github.io

preserveUrl というオプションを指定すればいけるようです。

ポイント

  1. ログインする動作はRoleで指定する(これは 公式ドキュメント にも書いてある正攻法)
  2. roleに preserveUrl オプションを指定する
  3. fixturepage を指定する代わりに
  4. testケース内で navigateTo を指定する
import { Role } from 'testcafe';

const role = Role('http://example.com/login', async t => { // 1
    await t
        .typeText('#login', 'username')
        .typeText('#password', 'password')
        .click('#sign-in');
}, { preserveUrl: true }); // 2

fixture `My Fixture`;  // 3

test('My test', async t => {
    await t
        .navigateTo('http://example.com/') // 4
        .useRole(role);
});

https://devexpress.github.io/testcafe/documentation/reference/test-api/role/constructor.html#optionspreserveurl のコードより抜粋

まとめ

雑ですがどなたかの参考になれば。