LoginSignup
3
1

More than 5 years have passed since last update.

CodeceptJSのMultiple Sessionsについて

Posted at

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
    })
})
3
1
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
3
1