CodeceptJSには Multiple Sessions という機能があり、シナリオ実行途中でCookie等を共有しない別のブラウザセッションを開くことができます。
下記のコードは次のように動作します。
- ブラウザを起動する
-
/login
に遷移する -
foo@example.com
としてログインする - 新しいブラウザを開く
-
/login
に遷移する -
bar@example.com
としてログインする -
foo@example.com
でログインしたウィンドウを開き、CLICK ME
と書かれたボタンをクリックする -
bar@example.com
でログインしたウィンドウを開き、CLICK ME
と書かれたボタンをクリックする
Feature('Session sample')
Scenario('Logged in without session', (I) => {
// foo@example.comでログイン
I.amOnPage('/login')
I.fillField('email', 'foo@example.com')
I.fillField('password', '1234')
I.click('Log in')
// 別セッションで bar@example.com としてログイン
session('bar', () => {
I.amOnPage('/login')
I.fillField('email', 'bar@example.com')
I.fillField('password', '4321')
I.click('Log in')
})
I.click('CLICK ME')
session('bar', () => {
I.click('CLICK ME')
}
})
session()
で作成したセッションも含め、シナリオ間は完全に分離されており、セッションは共有されません。
上記のコードに加え、下記のシナリオを追加すると、テストは失敗します。
Scenario('New Scenario', (I) => {
I.click('CLICK ME') // this will fail
session('suemura@openlogi.com', () => {
I.click('CLICK ME') // this also will fail
})
})