【EC-CUBE】【E2Eテスト】E2E(codeception)のテストコード理解

対象

EC-CUBE enterprise版 -> (front) 新規会員登録の入力から登録完了まで

URL:/Entry
関数名:customer_会員登録正常
ファイル場所:codeception/acceptance/EF04CustomerCest.php

コード

    public function customer_会員登録正常(AcceptanceTester $I)
    {
        $I->wantTo('EF0401-UC01-T01 会員登録 正常パターン');
        $I->getScenario()->incomplete('element click intercepted: Element is not clickable at point (952, 1599) が発生するため、一旦未実装とします');
        $I->amOnPage('/entry');
        // 疑問:Fixturesとはテストを実行するための基礎情報を作成するためのクラス
        $faker = Fixtures::get('faker');
        $BaseInfo = Fixtures::get('baseinfo');
        $new_email = microtime(true).'.'.$faker->safeEmail;

        // 会員情報入力フォームに、会員情報を入力する
        //「同意する」ボタンを押下する
        $form = [
            'entry[name][name01]' => '姓',
            'entry[name][name02]' => '名',
            'entry[kana][kana01]' => 'セイ',
            'entry[kana][kana02]' => 'メイ',
            'entry[postal_code]' => '530-0001',
            'entry[address][pref]' => ['value' => '27'],
            'entry[address][addr01]' => '大阪市北区',
            'entry[address][addr02]' => '梅田2-4-9 ブリーゼタワー13F',
            'entry[phone_number]' => '111-111-111',
            'entry[email][first]' => $new_email,
            'entry[email][second]' => $new_email,
            'entry[plain_password][first]' => 'password1234',
            'entry[plain_password][second]' => 'password1234',
            'entry[job]' => ['value' => '1'],
            'entry[user_policy_check]' => '1',
        ];

        $findPluginByCode = Fixtures::get('findPluginByCode');
        $Plugin = $findPluginByCode('MailMagazine42');
        if ($Plugin) {
            $I->amGoingTo('メルマガプラグインを発見したため、メルマガを購読します');
            $form['entry[mailmaga_flg]'] = '1';
        }
        // 疑問:controllerにFormを投げている?
        $I->submitForm(['css' => '.ec-layoutRole__main form'], $form, ['css' => 'button.ec-blockBtn--action']);

        // 疑問:確認画面?
        // 入力した会員情報を確認する。
        $I->see('姓 名', '.ec-registerRole form .ec-borderedDefs dl:nth-child(1) dd');
        $I->see('111111111', '.ec-registerRole form .ec-borderedDefs dl:nth-child(5) dd');
        $I->see($new_email, '.ec-registerRole form .ec-borderedDefs dl:nth-child(6) dd');
        
        // 疑問:なぜリセットしてる?
        $I->resetEmails();

        // 「会員登録をする」ボタンを押下する
        $I->click('.ec-registerRole form button.ec-blockBtn--action');

        // 顧客に届くメール内容の確認
        $message = $I->lastMessage();
        $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ');
        $I->seeEmailCount(1);
        // 疑問:firstメールアドレスに送信されたメール内容に、指定した文字が表示されているか確認している?
        foreach ([$new_email, $BaseInfo->getEmail01()] as $email) {
            $I->seeInLastEmailSubjectTo($email, '会員登録のご確認');
            $I->seeInLastEmailTo($email, '姓 名 様');
            $I->seeInLastEmailTo($email, 'この度は会員登録依頼をいただきまして、有り難うございます。');
        }

        // 「トップページへ」ボタンを押下する
        $I->click('a.ec-blockBtn--cancel');
        $I->see('新着情報', '.ec-secHeading__ja');

        // アクティベートURL取得
        $activateUrl = $I->grabFromLastEmailTo($new_email, '@/entry/activate/(.*)@');
        $I->resetEmails();

        // アクティベートURLからトップページへ
        $I->amOnPage($activateUrl);
        $I->see('新規会員登録(完了)', 'div.ec-pageHeader h1');

        // 疑問:↓は何の関数?処理最後に送るメールの事?
        $message = $I->lastMessage();
        // メールを受取り者が2人いるか確認
        $I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ');
        
        // 顧客に送ったメールが1つか確認
        $I->seeEmailCount(1);
        foreach ([$new_email, $BaseInfo->getEmail01()] as $email) {
            $I->seeInLastEmailSubjectTo($email, '会員登録が完了しました。');
            $I->seeInLastEmailTo($email, '姓 名 様');
            $I->seeInLastEmailTo($email, '本会員登録が完了いたしました。');
        }

        $I->click('div.ec-registerCompleteRole a.ec-blockBtn--cancel');
        $I->see('新着情報', '.ec-secHeading__ja');
    }

1.テスト準備

        $I->wantTo('EF0401-UC01-T01 会員登録 正常パターン');
        $I->getScenario()->incomplete('element click intercepted: Element is not clickable at point (952, 1599) が発生するため、一旦未実装とします');
        $I->amOnPage('/entry');
        // 疑問:Fixturesとはテストを実行するための基礎情報を作成するためのクラス
        $faker = Fixtures::get('faker');
        $BaseInfo = Fixtures::get('baseinfo');
        $new_email = microtime(true).'.'.$faker->safeEmail;
  1. テスト準備
  2. 会員情報入力フォームの作成・送信
  3. 確認画面で入力情報の確認・登録実行
  4. 仮登録メールの送信確認
  5. 本会員完了画面の表示確認
  6. 本会員メールの送信確認
    となっている事がわかった。

疑問

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール