module->amOnPage('/'); $this->module->see('Welcome to test app!'); $this->module->amOnPage('/info'); $this->module->see('Information'); } public function testCurrentUrl() { $this->module->amOnPage('/info'); $this->module->seeCurrentUrlEquals('/info'); $this->module->dontSeeInCurrentUrl('/user'); $this->module->dontSeeCurrentUrlMatches('~user~'); $this->module->amOnPage('/form/checkbox'); $this->module->seeCurrentUrlEquals('/form/checkbox'); $this->module->seeInCurrentUrl('form'); $this->module->seeCurrentUrlMatches('~form/.*~'); $this->module->dontSeeCurrentUrlEquals('/'); $this->module->dontSeeCurrentUrlMatches('~form/a~'); $this->module->dontSeeInCurrentUrl('user'); } public function testSee() { $this->module->amOnPage('/'); $this->module->see('Welcome to test app!'); $this->module->see('A wise man said: "debug!"'); $this->module->see('Welcome to test app!', 'h1'); $this->module->see('Some text with formatting on separate lines'); $this->module->see('Some text with formatting on separate lines', '#area4'); $this->module->see('on separate lines', '#area4 .someclass'); //ensure backwards compatibility, this assertion passed before this change $this->module->see("Test Link \n\n\n Test"); //Single quote HTML entities must be decoded $this->module->see("please don't provide us any personal information."); $this->module->amOnPage('/info'); $this->module->see('valuable', 'p'); $this->module->see('valuable', 'descendant-or-self::body/p'); $this->module->dontSee('Welcome'); $this->module->dontSee('valuable', 'h1'); $this->module->dontSee('Welcome', 'h6'); } public function testDontSeeFailsWhenMultilineTextMatches() { $this->shouldFail(); $this->module->amOnPage('/'); $this->module->dontSee('Some text with formatting on separate lines'); } public function testDontSeeFailsWhenMultilineTextMatchesInSelector() { $this->shouldFail(); $this->module->amOnPage('/'); $this->module->dontSee('Some text with formatting on separate lines', '#area4'); } /** * @Issue https://github.com/Codeception/Codeception/issues/3114 */ public function testSeeIsCaseInsensitiveForUnicodeText() { $this->module->amOnPage('/info'); $this->module->see('ссылочка'); $this->module->see('ссылочка', 'a'); } public function testDontSeeIsCaseInsensitiveForUnicodeText() { $this->setExpectedException("PHPUnit\Framework\AssertionFailedError"); $this->module->amOnPage('/info'); $this->module->dontSee('ссылочка'); } public function testSeeInSource() { $this->module->amOnPage('/'); $this->module->seeInSource('

Welcome to test app!

'); $this->module->seeInSource('A wise man said: "debug!"'); $this->module->dontSeeInSource('John Cleese'); } public function testSeeInCurrentUrl() { $this->module->amOnPage('/info'); $this->module->seeInCurrentUrl('/info'); } public function testSeeLink() { $this->module->amOnPage('/external_url'); $this->module->seeLink('Next'); $this->module->seeLink('Next', 'http://codeception.com/'); // Without TLD and trailing slash $this->module->dontSeeLink('Next', 'http://codeception'); } public function testDontSeeLink() { $this->module->amOnPage('/external_url'); $this->module->dontSeeLink('Back'); $this->module->dontSeeLink('Next', '/fsdfsdf/'); } public function testSeeLinkFailsIfTextDoesNotMatch() { $this->setExpectedException( 'PHPUnit\Framework\AssertionFailedError', "No links containing text 'Codeception' were found in page /external_url" ); $this->module->amOnPage('/external_url'); $this->module->seeLink('Codeception'); } public function testSeeLinkFailsIfHrefDoesNotMatch() { $this->setExpectedException( 'PHPUnit\Framework\AssertionFailedError', "No links containing text 'Next' and URL '/fsdfsdf/' were found in page /external_url" ); $this->module->amOnPage('/external_url'); $this->module->seeLink('Next', '/fsdfsdf/'); } public function testSeeLinkFailsIfHrefDoesNotMatchExactly() { $this->setExpectedException( 'PHPUnit\Framework\AssertionFailedError', "No links containing text 'Next' and URL 'http://codeception' were found in page /external_url" ); $this->module->amOnPage('/external_url'); $this->module->seeLink('Next', 'http://codeception'); } public function testDontSeeLinkFailsIfTextMatches() { $this->setExpectedException( 'PHPUnit\Framework\AssertionFailedError', "Link containing text 'Next' was found in page /external_url" ); $this->module->amOnPage('/external_url'); $this->module->dontSeeLink('Next'); } public function testDontSeeLinkFailsIfTextAndUrlMatches() { $this->setExpectedException( 'PHPUnit\Framework\AssertionFailedError', "Link containing text 'Next' and URL 'http://codeception.com/' was found in page /external_url" ); $this->module->amOnPage('/external_url'); $this->module->dontSeeLink('Next', 'http://codeception.com/'); } public function testSeeLinkMatchesRelativeLink() { $this->module->amOnPage('/info'); $this->module->seeLink('Sign in!', '/login'); $this->module->dontSeeLink('Sign in!', '/log'); } public function testDontSeeLinkMatchesRelativeLink() { $this->setExpectedException( 'PHPUnit\Framework\AssertionFailedError', "Link containing text 'Sign in!' and URL '/login' was found in page /info" ); $this->module->amOnPage('/info'); $this->module->dontSeeLink('Sign in!', '/login'); } public function testClick() { $this->module->amOnPage('/'); $this->module->click('More info'); $this->module->seeInCurrentUrl('/info'); $this->module->amOnPage('/'); $this->module->click('#link'); $this->module->seeInCurrentUrl('/info'); $this->module->amOnPage('/'); $this->module->click("descendant-or-self::a[@id = 'link']"); $this->module->seeInCurrentUrl('/info'); } public function testClickByName() { $this->module->amOnPage('/form/button'); $this->module->click("btn0"); $form = data::get('form'); $this->assertEquals('val', $form['text']); } public function testClickByLinkTitle() { $this->module->amOnPage('/'); $this->module->click("Link Title"); $this->module->seeInCurrentUrl('/info'); } public function testClickOnContext() { $this->module->amOnPage('/'); $this->module->click('More info', 'p'); $this->module->seeInCurrentUrl('/info'); $this->module->amOnPage('/'); $this->module->click('More info', 'body>p'); $this->module->seeInCurrentUrl('/info'); } public function testCheckboxByCss() { $this->module->amOnPage('/form/checkbox'); $this->module->checkOption('#checkin'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('agree', $form['terms']); } public function testCheckboxByName() { $this->module->amOnPage('/form/checkbox'); $this->module->checkOption('terms'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('agree', $form['terms']); } public function testCheckboxByLabel() { $this->module->amOnPage('/form/checkbox'); $this->module->checkOption('I Agree'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('agree', $form['terms']); } /** * @group testCheckboxArray * @Issue https://github.com/Codeception/Codeception/pull/1145 */ public function testCheckboxArray() { $this->module->amOnPage('/form/checkbox_array'); $this->module->checkOption('#id2'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('second', reset($form['field'])); } public function testSelectByCss() { $this->module->amOnPage('/form/select'); $this->module->selectOption('form select[name=age]', 'adult'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('adult', $form['age']); } public function testSelectByName() { $this->module->amOnPage('/form/select'); $this->module->selectOption('age', 'adult'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('adult', $form['age']); } public function testSelectByLabel() { $this->module->amOnPage('/form/select'); $this->module->selectOption('Select your age', 'dead'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('dead', $form['age']); } public function testSelectByLabelAndOptionText() { $this->module->amOnPage('/form/select'); $this->module->selectOption('Select your age', '21-60'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('adult', $form['age']); } public function testSeeSelectedOption() { $this->module->amOnPage('/form/select'); $this->module->seeOptionIsSelected('#age', '60-100'); $this->module->dontSeeOptionIsSelected('#age', '100-210'); } public function testSeeSelectedOptionForRadioButton() { $this->module->amOnPage('/form/example6'); $this->module->seeOptionIsSelected('input[name=frequency]', 'hour'); $this->module->dontSeeOptionIsSelected('input[name=frequency]', 'week'); } /** * @Issue https://github.com/Codeception/Codeception/issues/2733 */ public function testSeeSelectedOptionReturnsFirstOptionIfNotSelected() { $this->module->amOnPage('/form/complex'); $this->module->seeOptionIsSelected('#age', 'below 13'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('child', $form['age'], 'first option was not submitted'); } /** * @group testSubmitSeveralSubmitsForm * @Issue https://github.com/Codeception/Codeception/issues/1183 */ public function testSubmitSeveralSubmitsForm() { $this->module->amOnPage('/form/example8'); $this->module->click('form button[value="second"]'); $form = data::get('form'); $this->assertEquals('second', $form['submit']); } /** * Additional test to make sure no off-by-one related problem. * * @group testSubmitSeveralSubmitsForm * @Issue https://github.com/Codeception/Codeception/issues/1183 */ public function testSubmitLotsOfSubmitsForm() { $this->module->amOnPage('/form/example11'); $this->module->click('form button[value="fifth"]'); $form = data::get('form'); $this->assertEquals('fifth', $form['submit']); } public function testSelectMultipleOptionsByText() { $this->module->amOnPage('/form/select_multiple'); $this->module->selectOption('What do you like the most?', array('Play Video Games', 'Have Sex')); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals(array('play', 'adult'), $form['like']); } public function testSelectMultipleOptionsByValue() { $this->module->amOnPage('/form/select_multiple'); $this->module->selectOption('What do you like the most?', array('eat', 'adult')); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals(array('eat', 'adult'), $form['like']); } public function testHidden() { $this->module->amOnPage('/form/hidden'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('kill_people', $form['action']); } public function testTextareaByCss() { $this->module->amOnPage('/form/textarea'); $this->module->fillField('textarea', 'Nothing special'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('Nothing special', $form['description']); } public function testTextareaByLabel() { $this->module->amOnPage('/form/textarea'); $this->module->fillField('Description', 'Nothing special'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('Nothing special', $form['description']); } public function testTextFieldByCss() { $this->module->amOnPage('/form/field'); $this->module->fillField('#name', 'Nothing special'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('Nothing special', $form['name']); } public function testTextFieldByName() { $this->module->amOnPage('/form/example1'); $this->module->fillField('LoginForm[username]', 'davert'); $this->module->fillField('LoginForm[password]', '123456'); $this->module->click('Login'); $login = data::get('form'); $this->assertEquals('davert', $login['LoginForm']['username']); $this->assertEquals('123456', $login['LoginForm']['password']); } public function testTextFieldByLabel() { $this->module->amOnPage('/form/field'); $this->module->fillField('Name', 'Nothing special'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('Nothing special', $form['name']); } public function testTextFieldByLabelWithoutFor() { $this->module->amOnPage('/form/field'); $this->module->fillField('Other label', 'Nothing special'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('Nothing special', $form['othername']); } public function testFileFieldByCss() { $this->module->amOnPage('/form/file'); $this->module->attachFile('#avatar', 'app/avatar.jpg'); $this->module->click('Submit'); $this->assertNotEmpty(data::get('files')); $files = data::get('files'); $this->assertArrayHasKey('avatar', $files); } public function testFileFieldByLabel() { $this->module->amOnPage('/form/file'); $this->module->attachFile('Avatar', 'app/avatar.jpg'); $this->module->click('Submit'); $this->assertNotEmpty(data::get('files')); } public function testSeeCheckboxIsNotChecked() { $this->module->amOnPage('/form/checkbox'); $this->module->dontSeeCheckboxIsChecked('#checkin'); $this->module->dontSeeCheckboxIsChecked('I Agree'); } public function testSeeCheckboxChecked() { $this->module->amOnPage('/info'); $this->module->seeCheckboxIsChecked('input[type=checkbox]'); $this->module->seeCheckboxIsChecked('Checked'); } public function testSeeWithNonLatin() { $this->module->amOnPage('/info'); $this->module->see('на'); } public function testSeeWithNonLatinAndSelectors() { $this->module->amOnPage('/info'); $this->module->see('Текст', 'p'); } public function testSeeInFieldOnInput() { $this->module->amOnPage('/form/field'); $this->module->seeInField('Name', 'OLD_VALUE'); $this->module->seeInField('input[name=name]', 'OLD_VALUE'); $this->module->seeInField('descendant-or-self::input[@id="name"]', 'OLD_VALUE'); } public function testSeeInFieldForEmptyInput() { $this->module->amOnPage('/form/empty'); $this->module->seeInField('#empty_input', ''); } public function testSeeInFieldOnTextarea() { $this->module->amOnPage('/form/textarea'); $this->module->seeInField('Description', 'sunrise'); $this->module->seeInField('textarea', 'sunrise'); $this->module->seeInField('descendant-or-self::textarea[@id="description"]', 'sunrise'); } public function testSeeInFieldForEmptyTextarea() { $this->module->amOnPage('/form/empty'); $this->module->seeInField('#empty_textarea', ''); } public function testSeeInFieldOnCheckbox() { $this->module->amOnPage('/form/field_values'); $this->module->dontSeeInField('checkbox[]', 'not seen one'); $this->module->seeInField('checkbox[]', 'see test one'); $this->module->dontSeeInField('checkbox[]', 'not seen two'); $this->module->seeInField('checkbox[]', 'see test two'); $this->module->dontSeeInField('checkbox[]', 'not seen three'); $this->module->seeInField('checkbox[]', 'see test three'); } public function testSeeInFieldWithBoolean() { $this->module->amOnPage('/form/field_values'); $this->module->seeInField('checkbox1', true); $this->module->dontSeeInField('checkbox1', false); $this->module->seeInField('checkbox2', false); $this->module->dontSeeInField('checkbox2', true); $this->module->seeInField('radio2', true); $this->module->dontSeeInField('radio2', false); $this->module->seeInField('radio3', false); $this->module->dontSeeInField('radio3', true); } public function testSeeInFieldOnRadio() { $this->module->amOnPage('/form/field_values'); $this->module->seeInField('radio1', 'see test one'); $this->module->dontSeeInField('radio1', 'not seen one'); $this->module->dontSeeInField('radio1', 'not seen two'); $this->module->dontSeeInField('radio1', 'not seen three'); } public function testSeeInFieldOnSelect() { $this->module->amOnPage('/form/field_values'); $this->module->seeInField('select1', 'see test one'); $this->module->seeInField('select1', 'Selected'); $this->module->dontSeeInField('select1', 'not seen one'); $this->module->dontSeeInField('select1', 'not seen two'); $this->module->dontSeeInField('select1', 'not seen three'); $this->module->dontSeeInField('select1', 'Not selected'); } public function testSeeInFieldEmptyValueForUnselectedSelect() { $this->module->amOnPage('/form/field_values'); $this->module->seeInField('select3', ''); } public function testSeeInFieldOnSelectMultiple() { $this->module->amOnPage('/form/field_values'); $this->module->dontSeeInField('select2', 'not seen one'); $this->module->seeInField('select2', 'see test one'); $this->module->dontSeeInField('select2', 'not seen two'); $this->module->seeInField('select2', 'see test two'); $this->module->dontSeeInField('select2', 'not seen three'); $this->module->seeInField('select2', 'see test three'); } public function testSeeInFieldWithExactMatch() { $this->module->amOnPage('/form/field_values'); $this->module->seeInField(array('name' => 'select2'), 'see test one'); } public function testDontSeeInFieldOnInput() { $this->module->amOnPage('/form/field'); $this->module->dontSeeInField('Name', 'Davert'); $this->module->dontSeeInField('input[name=name]', 'Davert'); $this->module->dontSeeInField('descendant-or-self::input[@id="name"]', 'Davert'); } public function testDontSeeInFieldOnTextarea() { $this->module->amOnPage('/form/textarea'); $this->module->dontSeeInField('Description', 'sunset'); $this->module->dontSeeInField('textarea', 'sunset'); $this->module->dontSeeInField('descendant-or-self::textarea[@id="description"]', 'sunset'); } public function testSeeInFormFields() { $this->module->amOnPage('/form/field_values'); $params = [ 'checkbox[]' => [ 'see test one', 'see test two', ], 'radio1' => 'see test one', 'checkbox1' => true, 'checkbox2' => false, 'select1' => 'see test one', 'select2' => [ 'see test one', 'see test two', 'see test three' ] ]; $this->module->seeInFormFields('form', $params); } public function testSeeInFormFieldsFails() { $this->module->amOnPage('/form/field_values'); $this->setExpectedException("PHPUnit\Framework\AssertionFailedError"); $params = [ 'radio1' => 'something I should not see', 'checkbox1' => true, 'checkbox2' => false, 'select1' => 'see test one', 'select2' => [ 'see test one', 'see test two', 'see test three' ] ]; $this->module->seeInFormFields('form', $params); } public function testDontSeeInFormFields() { $this->module->amOnPage('/form/field_values'); $params = [ 'checkbox[]' => [ 'not seen one', 'not seen two', ], 'radio1' => 'not seen one', 'checkbox1' => false, 'checkbox2' => true, 'select1' => 'not seen one', 'select2' => [ 'not seen one', 'No where to be seen' ] ]; $this->module->dontSeeInFormFields('form', $params); } public function testDontSeeInFormFieldsFails() { $this->module->amOnPage('/form/field_values'); $this->setExpectedException("PHPUnit\Framework\AssertionFailedError"); $params = [ 'checkbox[]' => [ 'wont see this anyway', 'see test one', ], 'select2' => [ 'not seen one', 'No where to be seen' ] ]; $this->module->dontSeeInFormFields('form', $params); } public function testSeeInFormFieldsWithAssociativeArrays() { $this->module->amOnPage('/form/example17'); $this->module->seeInFormFields('form', [ 'FooBar' => ['bar' => 'baz'], 'Food' => ['beer' => ['yum' => ['yeah' => 'mmhm']]], ]); } public function testSeeInFieldWithNonLatin() { $this->module->amOnPage('/info'); $this->module->seeInField('rus', 'Верно'); } public function testApostrophesInText() { $this->module->amOnPage('/info'); $this->module->see("Don't do that at home!"); $this->module->see("Don't do that at home!", 'h3'); } public function testSign() { $this->module->amOnPage('/info'); $this->module->seeLink('Sign in!'); $this->module->amOnPage('/info'); $this->module->click('Sign in!'); } public function testGrabTextFrom() { $this->module->amOnPage('/'); $result = $this->module->grabTextFrom('h1'); $this->assertEquals("Welcome to test app!", $result); $result = $this->module->grabTextFrom('descendant-or-self::h1'); $this->assertEquals("Welcome to test app!", $result); $result = $this->module->grabTextFrom('~Welcome to (\w+) app!~'); $this->assertEquals('test', $result); } public function testGrabValueFrom() { $this->module->amOnPage('/form/hidden'); $result = $this->module->grabValueFrom('#action'); $this->assertEquals("kill_people", $result); $result = $this->module->grabValueFrom("descendant-or-self::form/descendant::input[@name='action']"); $this->assertEquals("kill_people", $result); $this->module->amOnPage('/form/textarea'); $result = $this->module->grabValueFrom('#description'); $this->assertEquals('sunrise', $result); $this->module->amOnPage('/form/select'); $result = $this->module->grabValueFrom('#age'); $this->assertEquals('oldfag', $result); } /** * @see https://github.com/Codeception/Codeception/issues/3866 */ public function testGrabValueFromWithFillField() { $this->module->amOnPage('/form/bug3866'); $this->module->fillField('empty', 'new value'); $result = $this->module->grabValueFrom('#empty'); $this->assertEquals('new value', $result); $this->module->fillField('empty_textarea', 'new value'); $result = $this->module->grabValueFrom('#empty_textarea'); $this->assertEquals('new value', $result); $this->module->fillField('//textarea[@name="textarea[name][]"]', 'new value'); $result = $this->module->grabValueFrom('#textarea_with_square_bracket'); $this->assertEquals('new value', $result); } public function testGrabAttributeFrom() { $this->module->amOnPage('/search'); $this->assertEquals('get', $this->module->grabAttributeFrom('form', 'method')); } public function testLinksWithSimilarNames() { $this->module->amOnPage('/'); $this->module->click('Test Link'); $this->module->seeInCurrentUrl('/form/file'); $this->module->amOnPage('/'); $this->module->click('Test'); $this->module->seeInCurrentUrl('/form/hidden'); } public function testLinksWithDifferentContext() { $this->module->amOnPage('/'); $this->module->click('Test', '#area1'); $this->module->seeInCurrentUrl('/form/file'); $this->module->amOnPage('/'); $this->module->click('Test', '#area2'); $this->module->seeInCurrentUrl('/form/hidden'); } public function testSeeElementOnPage() { $this->module->amOnPage('/form/field'); $this->module->seeElement('input[name=name]'); $this->module->seeElement('input', ['name' => 'name']); $this->module->seeElement('input', ['id' => 'name']); $this->module->seeElement('descendant-or-self::input[@id="name"]'); $this->module->dontSeeElement('#something-beyond'); $this->module->dontSeeElement('input', ['id' => 'something-beyond']); $this->module->dontSeeElement('descendant-or-self::input[@id="something-beyond"]'); } // regression test. https://github.com/Codeception/Codeception/issues/587 public function testSeeElementOnPageFails() { $this->setExpectedException("PHPUnit\Framework\AssertionFailedError"); $this->module->amOnPage('/form/field'); $this->module->dontSeeElement('input[name=name]'); } public function testCookies() { $cookie_name = 'test_cookie'; $cookie_value = 'this is a test'; $this->module->amOnPage('/'); $this->module->setCookie('nocookie', '1111'); $this->module->setCookie($cookie_name, $cookie_value); $this->module->setCookie('notthatcookie', '22222'); $this->module->seeCookie($cookie_name); $this->module->dontSeeCookie('evil_cookie'); $cookie = $this->module->grabCookie($cookie_name); $this->assertEquals($cookie_value, $cookie); $this->module->resetCookie($cookie_name); $this->module->dontSeeCookie($cookie_name); } public function testCookiesWithPath() { $cookie_name = 'cookie'; $cookie_value = 'tasty'; $this->module->amOnPage('/info'); $this->module->setCookie($cookie_name, $cookie_value, ['path' => '/info']); $this->module->seeCookie($cookie_name, ['path' => '/info']); $this->module->dontSeeCookie('evil_cookie'); $cookie = $this->module->grabCookie($cookie_name, ['path' => '/info']); $this->assertEquals($cookie_value, $cookie); $this->module->resetCookie($cookie_name, ['path' => '/info']); $this->module->dontSeeCookie($cookie_name, ['path' => '/info']); $this->module->dontSeeCookie($cookie_name); } public function testSendingCookies() { $this->module->amOnPage('/'); $this->module->setCookie('nocookie', '1111'); $this->module->amOnPage('/cookies'); $this->module->see('nocookie', 'pre'); } public function testPageTitle() { $this->module->amOnPage('/'); $this->module->seeInTitle('TestEd Beta 2.0'); $this->module->dontSeeInTitle('Welcome to test app'); $this->module->amOnPage('/info'); $this->module->dontSeeInTitle('TestEd Beta 2.0'); } public function testSeeFails() { $this->shouldFail(); $this->module->amOnPage('/'); $this->module->see('Text not here'); } public function testSeeInsideFails() { $this->shouldFail(); $this->module->amOnPage('/info'); $this->module->see('woups', 'p'); } public function testDontSeeInInsideFails() { $this->shouldFail(); $this->module->amOnPage('/info'); $this->module->dontSee('interesting', 'p'); } public function testSeeElementFails() { $this->shouldFail(); $this->module->amOnPage('/info'); $this->module->seeElement('.alert'); } public function testDontSeeElementFails() { $this->shouldFail(); $this->module->amOnPage('/info'); $this->module->dontSeeElement('#back'); } public function testSeeInFieldFail() { $this->shouldFail(); $this->module->amOnPage('/form/empty'); $this->module->seeInField('#empty_textarea', 'xxx'); } public function testSeeInFieldOnTextareaFails() { $this->shouldFail(); $this->module->amOnPage('/form/textarea'); $this->module->dontSeeInField('Description', 'sunrise'); } public function testSeeCheckboxIsNotCheckedFails() { $this->shouldFail(); $this->module->amOnPage('/form/complex'); $this->module->dontSeeCheckboxIsChecked('#checkin'); } public function testSeeCheckboxCheckedFails() { $this->shouldFail(); $this->module->amOnPage('/form/checkbox'); $this->module->seeCheckboxIsChecked('#checkin'); } public function testDontSeeElementOnPageFails() { $this->shouldFail(); $this->module->amOnPage('/form/field'); $this->module->dontSeeElement('descendant-or-self::input[@id="name"]'); } public function testStrictLocators() { $this->module->amOnPage('/login'); $this->module->seeElement(['id' => 'submit-label']); $this->module->seeElement(['name' => 'password']); $this->module->seeElement(['class' => 'optional']); $this->module->seeElement(['css' => 'form.global_form_box']); $this->module->seeElement(['xpath' => \Codeception\Util\Locator::tabIndex(4)]); $this->module->fillField(['name' => 'password'], '123456'); $this->module->amOnPage('/form/select'); $this->module->selectOption(['name' => 'age'], 'child'); $this->module->amOnPage('/form/checkbox'); $this->module->checkOption(['name' => 'terms']); $this->module->amOnPage('/'); $this->module->seeElement(['link' => 'Test']); $this->module->click(['link' => 'Test']); $this->module->seeCurrentUrlEquals('/form/hidden'); } public function testFailStrictLocators() { $this->shouldFail(); $this->module->amOnPage('/form/checkbox'); $this->module->checkOption(['name' => 'age']); } public function testExample1() { $this->module->amOnPage('/form/example1'); $this->module->see('Login', 'button'); $this->module->fillField('#LoginForm_username', 'davert'); $this->module->fillField('#LoginForm_password', '123456'); $this->module->checkOption('#LoginForm_rememberMe'); $this->module->click('Login'); $login = data::get('form'); $this->assertEquals('davert', $login['LoginForm']['username']); $this->assertEquals('123456', $login['LoginForm']['password']); $this->assertNotEmpty($login['LoginForm']['rememberMe']); } public function testExample2() { $this->module->amOnPage('/form/example2'); $this->module->fillField('input[name=username]', 'davert'); $this->module->fillField('input[name=password]', '123456'); $this->module->click('Log on'); $login = data::get('form'); $this->assertEquals('davert', $login['username']); $this->assertEquals('123456', $login['password']); $this->assertEquals('login', $login['action']); } public function testAmpersand() { $this->module->amOnPage('/info'); $this->module->see('Kill & Destroy'); $this->module->see('Kill & Destroy', 'div'); } /** * https://github.com/Codeception/Codeception/issues/1091 */ public function testExample4() { $this->module->amOnPage('/form/example4'); $this->module->click(['css' => '#register button[type="submit"]']); $this->module->amOnPage('/form/example4'); $this->module->click('#register button[type="submit"]'); } /** * https://github.com/Codeception/Codeception/issues/1098 */ public function testExample5() { $this->module->amOnPage('/form/example5'); $this->module->fillField('username', 'John'); $this->module->fillField('password', '1234'); $this->module->click('Login'); $this->module->seeCurrentUrlEquals('/form/example5?username=John&password=1234'); } public function testExample5WithSubmitForm() { $this->module->amOnPage('/form/example5'); $this->module->submitForm('form', ['username' => 'John', 'password' => '1234']); $this->module->seeCurrentUrlEquals('/form/example5?username=John&password=1234'); } public function testExample5WithParams() { $this->module->amOnPage('/form/example5?a=b'); $this->module->fillField('username', 'John'); $this->module->fillField('password', '1234'); $this->module->click('Login'); $this->module->seeCurrentUrlEquals('/form/example5?username=John&password=1234'); } public function testExample5WithSubmitFormAndParams() { $this->module->amOnPage('/form/example5?a=b'); $this->module->submitForm('form', ['username' => 'John', 'password' => '1234']); $this->module->seeCurrentUrlEquals('/form/example5?username=John&password=1234'); } /** * @Issue https://github.com/Codeception/Codeception/issues/1212 */ public function testExample9() { $this->module->amOnPage('/form/example9'); $this->module->attachFile('form[name=package_csv_form] input[name=xls_file]', 'app/avatar.jpg'); $this->module->click('Upload packages', 'form[name=package_csv_form]'); $this->assertNotEmpty(data::get('files')); $files = data::get('files'); $this->assertArrayHasKey('xls_file', $files); $form = data::get('form'); codecept_debug($form); $this->assertArrayHasKey('submit', $form); $this->assertArrayHasKey('MAX_FILE_SIZE', $form); $this->assertArrayHasKey('form_name', $form); } public function testSubmitForm() { $this->module->amOnPage('/form/complex'); $this->module->submitForm('form', array( 'name' => 'Davert', 'description' => 'Is Codeception maintainer' )); $form = data::get('form'); $this->assertEquals('Davert', $form['name']); $this->assertEquals('Is Codeception maintainer', $form['description']); $this->assertArrayNotHasKey('disabled_fieldset', $form); $this->assertArrayNotHasKey('disabled_fieldset_textarea', $form); $this->assertArrayNotHasKey('disabled_fieldset_select', $form); $this->assertArrayNotHasKey('disabled_field', $form); $this->assertEquals('kill_all', $form['action']); } public function testSubmitFormWithFillField() { $this->module->amOnPage('/form/complex'); $this->module->fillField('name', 'Kilgore Trout'); $this->module->fillField('description', 'Is a fish'); $this->module->submitForm('form', [ 'description' => 'Is from Iliyum, NY' ]); $form = data::get('form'); $this->assertEquals('Kilgore Trout', $form['name']); $this->assertEquals('Is from Iliyum, NY', $form['description']); } public function testSubmitFormWithoutButton() { $this->module->amOnPage('/form/empty'); $this->module->submitForm('form', array( 'text' => 'Hello!' )); $form = data::get('form'); $this->assertEquals('Hello!', $form['text']); } public function testSubmitFormWithAmpersand() { $this->module->amOnPage('/form/submitform_ampersands'); $this->module->submitForm('form', []); $form = data::get('form'); $this->assertEquals('this & that', $form['test']); } public function testSubmitFormWithArrayField() { $this->module->amOnPage('/form/example17'); $this->module->submitForm('form', []); $data = data::get('form'); $this->assertSame('baz', $data['FooBar']['bar']); $this->assertArrayNotHasKey('FooBar[bar]', $data); } public function testSubmitFormMultiSelectWithArrayParameter() { $this->module->amOnPage('/form/submitform_multiple'); $this->module->submitForm('form', [ 'select' => [ 'see test one', 'not seen four' ] ]); $form = data::get('form'); $this->assertCount(2, $form['select']); $this->assertEquals('see test one', $form['select'][0]); $this->assertEquals('not seen four', $form['select'][1]); } public function testSubmitFormWithMultiSelect() { $this->module->amOnPage('/form/submitform_multiple'); $this->module->submitForm('form', []); $form = data::get('form'); $this->assertCount(2, $form['select']); $this->assertEquals('see test one', $form['select'][0]); $this->assertEquals('see test two', $form['select'][1]); } public function testSubmitFormCheckboxWithArrayParameter() { $this->module->amOnPage('/form/field_values'); $this->module->submitForm('form', [ 'checkbox' => [ 'not seen one', 'see test two', 'not seen three' ] ]); $form = data::get('form'); $this->assertCount(3, $form['checkbox']); $this->assertEquals('not seen one', $form['checkbox'][0]); $this->assertEquals('see test two', $form['checkbox'][1]); $this->assertEquals('not seen three', $form['checkbox'][2]); } public function testSubmitFormCheckboxWithBooleanArrayParameter() { $this->module->amOnPage('/form/field_values'); $this->module->submitForm('form', [ 'checkbox' => [ true, false, true ] ]); $form = data::get('form'); $this->assertCount(2, $form['checkbox']); $this->assertEquals('not seen one', $form['checkbox'][0]); $this->assertEquals('not seen two', $form['checkbox'][1]); } /** * https://github.com/Codeception/Codeception/issues/1381 */ public function testFillingFormFieldWithoutSubmitButton() { $this->module->amOnPage('/form/empty_fill'); $this->module->fillField('test', 'value'); } public function testSubmitFormWithDefaultTextareaValue() { $this->module->amOnPage('/form/textarea'); $this->module->submitForm('form', []); $form = data::get('form'); $this->assertEquals('sunrise', $form['description']); } /** * @issue #1180 */ public function testClickLinkWithInnerSpan() { $this->module->amOnPage('/form/example7'); $this->module->click("Buy Chocolate Bar"); $this->module->seeCurrentUrlEquals('/'); } /* * @issue #1304 */ public function testSelectTwoSubmitsByText() { $this->module->amOnPage('/form/select_two_submits'); $this->module->selectOption('What kind of sandwich would you like?', 2); $this->module->click('Save'); $form = data::get('form'); $this->assertEquals(2, $form['sandwich_select']); } public function testSelectTwoSubmitsByCSS() { $this->module->amOnPage('/form/select_two_submits'); $this->module->selectOption("form select[name='sandwich_select']", '2'); $this->module->click('Save'); $form = data::get('form'); $this->assertEquals(2, $form['sandwich_select']); } protected function shouldFail() { $this->setExpectedException('PHPUnit\Framework\AssertionFailedError'); } /** * https://github.com/Codeception/Codeception/issues/1051 */ public function testSubmitFormWithTwoSubmitButtonsSubmitsCorrectValue() { $this->module->amOnPage('/form/example10'); $this->module->seeElement("#button2"); $this->module->click("#button2"); $form = data::get('form'); $this->assertArrayHasKey('button2', $form); $this->assertArrayHasKey('username', $form); $this->assertEquals('value2', $form['button2']); $this->assertEquals('fred', $form['username']); } /** * https://github.com/Codeception/Codeception/issues/1051 */ public function testSubmitFormWithTwoSubmitButtonsSubmitsCorrectValueAfterFillField() { $this->module->amOnPage('/form/example10'); $this->module->fillField("username", "bob"); $this->module->click("#button2"); $form = data::get('form'); $this->assertArrayHasKey('button2', $form); $this->assertArrayHasKey('username', $form); $this->assertEquals('value2', $form['button2']); $this->assertEquals('bob', $form['username']); } /* * https://github.com/Codeception/Codeception/issues/1274 */ public function testSubmitFormWithDocRelativePathForAction() { $this->module->amOnPage('/form/example12'); $this->module->submitForm('form', array( 'test' => 'value' )); $this->module->seeCurrentUrlEquals('/form/example11'); } public function testSubmitFormWithDocRelativePathForActionFromDefaultPage() { $this->module->amOnPage('/form/'); $this->module->submitForm('form', array( 'test' => 'value' )); $this->module->seeCurrentUrlEquals('/form/example11'); } public function testLinkWithDocRelativeURLFromDefaultPage() { $this->module->amOnPage('/form/'); $this->module->click('Doc-Relative Link'); $this->module->seeCurrentUrlEquals('/form/example11'); } /* * https://github.com/Codeception/Codeception/issues/1507 */ public function testSubmitFormWithDefaultRadioAndCheckboxValues() { $this->module->amOnPage('/form/example16'); $this->module->submitForm('form', array( 'test' => 'value' )); $form = data::get('form'); $this->assertArrayHasKey('checkbox1', $form, 'Checkbox value not sent'); $this->assertArrayHasKey('radio1', $form, 'Radio button value not sent'); $this->assertEquals('testing', $form['checkbox1']); $this->assertEquals('to be sent', $form['radio1']); } public function testSubmitFormCheckboxWithBoolean() { $this->module->amOnPage('/form/example16'); $this->module->submitForm('form', array( 'checkbox1' => true )); $form = data::get('form'); $this->assertArrayHasKey('checkbox1', $form, 'Checkbox value not sent'); $this->assertEquals('testing', $form['checkbox1']); $this->module->amOnPage('/form/example16'); $this->module->submitForm('form', array( 'checkbox1' => false )); $form = data::get('form'); $this->assertArrayNotHasKey('checkbox1', $form, 'Checkbox value sent'); } public function testSubmitFormWithCheckboxesWithoutValue() { $this->module->amOnPage('/form/checkbox_default_value'); $this->module->submitForm('form', ['checkbox1' => true]); $this->assertSame('on', data::get('query')['checkbox1']); } public function testSubmitFormWithButtons() { $this->module->amOnPage('/form/form_with_buttons'); $this->module->submitForm('form', array( 'test' => 'value', )); $form = data::get('form'); $this->assertFalse( isset($form['button1']) || isset($form['button2']) || isset($form['button3']) || isset($form['button4']), 'Button values should not be set' ); $this->module->amOnPage('/form/form_with_buttons'); $this->module->submitForm('form', array( 'test' => 'value', ), 'button3'); $form = data::get('form'); $this->assertFalse( isset($form['button1']) || isset($form['button2']) || isset($form['button4']), 'Button values for buttons 1, 2 and 4 should not be set' ); $this->assertArrayHasKey('button3', $form, 'Button value for button3 should be set'); $this->assertEquals($form['button3'], 'third', 'Button value for button3 should equal third'); $this->module->amOnPage('/form/form_with_buttons'); $this->module->submitForm('form', array( 'test' => 'value', ), 'button4'); $form = data::get('form'); $this->assertFalse( isset($form['button1']) || isset($form['button2']) || isset($form['button3']), 'Button values for buttons 1, 2 and 3 should not be set' ); $this->assertArrayHasKey('button4', $form, 'Button value for button4 should be set'); $this->assertEquals($form['button4'], 'fourth', 'Button value for button4 should equal fourth'); } /** * https://github.com/Codeception/Codeception/issues/1409 */ public function testWrongXpath() { $this->setExpectedException('Codeception\Exception\MalformedLocatorException'); $this->module->amOnPage('/'); $this->module->seeElement('//aas[asd}[sd]a[/['); } public function testWrongCSS() { $this->setExpectedException('Codeception\Exception\MalformedLocatorException'); $this->module->amOnPage('/'); $this->module->seeElement('.user#iasossetExpectedException('Codeception\Exception\MalformedLocatorException'); $this->module->amOnPage('/'); $this->module->seeElement(['css' => 'hel!1$setExpectedException('Codeception\Exception\MalformedLocatorException'); $this->module->amOnPage('/'); $this->module->seeElement(['xpath' => 'hellorld']); } public function testFormWithFilesArray() { $this->module->amOnPage('/form/example13'); $this->module->attachFile('foo[bar]', 'app/avatar.jpg'); $this->module->attachFile('foo[baz]', 'app/avatar.jpg'); $this->module->click('Submit'); $this->assertNotEmpty(data::get('files')); $files = data::get('files'); $this->assertArrayHasKey('bar', $files['foo']['name']); $this->assertArrayHasKey('baz', $files['foo']['name']); } public function testFormWithFileSpecialCharNames() { $this->module->amOnPage('/form/example14'); $this->module->attachFile('foo bar', 'app/avatar.jpg'); $this->module->attachFile('foo.baz', 'app/avatar.jpg'); $this->module->click('Submit'); $this->assertNotEmpty(data::get('files')); $files = data::get('files'); $this->assertNotEmpty($files); $this->assertArrayHasKey('foo_bar', $files); $this->assertArrayHasKey('foo_baz', $files); } /** * @Issue https://github.com/Codeception/Codeception/issues/1454 */ public function testTextFieldByNameFirstNotCss() { $this->module->amOnPage('/form/example15'); $this->module->fillField('title', 'Special Widget'); $this->module->fillField('description', 'description'); $this->module->fillField('price', '19.99'); $this->module->click('Create'); $data = data::get('form'); $this->assertEquals('Special Widget', $data['title']); } /** * @Issue https://github.com/Codeception/Codeception/issues/1535 */ public function testCheckingOptionsWithComplexNames() { $this->module->amOnPage('/form/bug1535'); $this->module->checkOption('#bmessage-topicslinks input[value="4"]'); $this->module->click('Submit'); $data = data::get('form'); $this->assertContains(4, $data['BMessage']['topicsLinks']); } /** * @Issue https://github.com/Codeception/Codeception/issues/1585 * @Issue https://github.com/Codeception/Codeception/issues/1602 */ public function testUnreachableField() { $this->module->amOnPage('/form/bug1585'); $this->module->fillField('textarea[name="captions[]"]', 'test2'); $this->module->fillField('items[1][]', 'test3'); $this->module->fillField('input[name="users[]"]', 'davert'); $this->module->attachFile('input[name="files[]"]', 'app/avatar.jpg'); $this->module->click('Submit'); $data = data::get('form'); $this->assertContains('test3', $data['items'][1]); $this->assertContains('test2', $data['captions']); $this->assertContains('davert', $data['users']); } public function testSubmitAdjacentForms() { $this->module->amOnPage('/form/submit_adjacentforms'); $this->module->submitForm('#form-2', []); $data = data::get('form'); $this->assertArrayHasKey('second-field', $data); $this->assertArrayNotHasKey('first-field', $data); $this->assertEquals('Killgore Trout', $data['second-field']); } public function testSubmitAdjacentFormsByButton() { $this->module->amOnPage('/form/submit_adjacentforms'); $this->module->fillField('first-field', 'First'); $this->module->fillField('second-field', 'Second'); $this->module->click('#submit1'); $data = data::get('form'); $this->assertArrayHasKey('first-field', $data); $this->assertArrayNotHasKey('second-field', $data); $this->assertEquals('First', $data['first-field']); $this->module->amOnPage('/form/submit_adjacentforms'); $this->module->fillField('first-field', 'First'); $this->module->fillField('second-field', 'Second'); $this->module->click('#submit2'); $data = data::get('form'); $this->assertArrayNotHasKey('first-field', $data); $this->assertArrayHasKey('second-field', $data); $this->assertEquals('Second', $data['second-field']); } public function testArrayField() { $this->module->amOnPage('/form/example17'); $this->module->seeInField('input[name="FooBar[bar]"]', 'baz'); $this->module->seeInField('input[name="Food[beer][yum][yeah]"]', 'mmhm'); } public function testFillFieldSquareBracketNames() { $this->module->amOnPage('/form/names-sq-brackets'); $this->module->fillField('//input[@name="input_text"]', 'filling this input'); $this->module->fillField('//input[@name="input[text][]"]', 'filling this input'); $this->module->fillField('//textarea[@name="textarea_name"]', 'filling this textarea'); $this->module->fillField('//textarea[@name="textarea[name][]"]', 'filling this textarea'); $this->module->fillField('//textarea[@name="textarea[name][]"]', 'filling this textarea once again'); $this->module->fillField('//textarea[@name="textarea_name"]', 'filling this textarea'); $this->module->fillField('//textarea[@name="textarea[name][]"]', 'filling this textarea more'); $this->module->fillField('//textarea[@name="textarea[name][]"]', 'filling this textarea most'); } public function testSelectAndCheckOptionSquareBracketNames() { $this->module->amOnPage('/form/names-sq-brackets'); $this->module->selectOption('//input[@name="input_radio_name"]', '1'); $this->module->selectOption('//input[@name="input_radio_name"]', '2'); $this->module->checkOption('//input[@name="input_checkbox_name"]', '1'); $this->module->checkOption('//input[@name="input_checkbox_name"]', '2'); $this->module->checkOption('//input[@name="input[checkbox][name][]"]', '1'); $this->module->checkOption('//input[@name="input[checkbox][name][]"]', '2'); $this->module->checkOption('//input[@name="input[checkbox][name][]"]', '1'); $this->module->selectOption('//select[@name="select_name"]', '1'); $this->module->selectOption('//input[@name="input[radio][name][]"]', '1'); $this->module->selectOption('//input[@name="input[radio][name][]"]', '2'); $this->module->selectOption('//input[@name="input[radio][name][]"]', '1'); $this->module->selectOption('//select[@name="select[name][]"]', '1'); } public function testFillFieldWithAmpersand() { $this->module->amOnPage('/form/field'); $this->module->fillField('Name', 'this & that'); $this->module->click('Submit'); $form = data::get('form'); $this->assertEquals('this & that', $form['name']); } public function testSeeInDeactivatedField() { $this->module->amOnPage('/form/complex'); $this->module->seeInField('#disabled_field', 'disabled_field'); $this->module->seeInField('#salutation', 'mr'); } public function testSwitchToIframe() { $this->module->amOnPage('/iframe'); $this->module->switchToIframe('content'); $this->module->see('Is that interesting?'); $this->module->click('Ссылочка'); } public function testGrabMultiple() { $this->module->amOnPage('/info'); $arr = $this->module->grabMultiple('#grab-multiple a:first-child'); $this->assertCount(1, $arr); $this->assertEquals('First', $arr[0]); $arr = $this->module->grabMultiple('#grab-multiple a'); $this->assertCount(3, $arr); $this->assertEquals('First', $arr[0]); $this->assertEquals('Second', $arr[1]); $this->assertEquals('Third', $arr[2]); // href for WebDriver with selenium returns a full link, so testing with ID $arr = $this->module->grabMultiple('#grab-multiple a', 'id'); $this->assertCount(3, $arr); $this->assertEquals('first-link', $arr[0]); $this->assertEquals('second-link', $arr[1]); $this->assertEquals('third-link', $arr[2]); } /** * @issue https://github.com/Codeception/Codeception/issues/2960 */ public function testClickMultiByteLink() { $this->module->amOnPage('/info'); $this->module->click('Franšízy - pobočky'); $this->module->seeCurrentUrlEquals('/'); } /** * @issue https://github.com/Codeception/Codeception/issues/3528 */ public function testClickThrowsElementNotFoundExceptionWhenTextContainsNumber() { $this->setExpectedException('Codeception\Exception\ElementNotFound', "'Link 2' is invalid CSS and XPath selector and Link or Button element with 'name=Link 2' was not found."); $this->module->amOnPage('/info'); $this->module->click('Link 2'); } public function testClickExistingLinkWithTextContainingNumber() { $this->module->amOnPage('/info'); $this->module->click('Link 3'); $this->module->seeCurrentUrlEquals('/cookies'); } public function testSelectOptionValueSelector() { $this->module->amOnPage('/form/select_selectors'); $this->module->selectOption('age', ['value' => '20']); $this->module->click('Submit'); $data = data::get('form'); $this->assertEquals('20', $data['age']); } public function testSelectOptionTextSelector() { $this->module->amOnPage('/form/select_selectors'); $this->module->selectOption('age', ['text' => '20']); $this->module->seeOptionIsSelected('age', '20'); $this->module->selectOption('age', ['text' => '21']); $this->module->seeOptionIsSelected('age', '21'); } public function testClickButtonInLink() { $this->module->amOnPage('/form/button_in_link'); $this->module->click('More Info'); $this->module->seeCurrentUrlEquals('/info'); } public function testClickButtonInLinkAndSpan() { $this->module->amOnPage('/form/button_in_link'); $this->module->click('Span Info'); $this->module->seeCurrentUrlEquals('/info'); } public function testClickButtonInLinkUsingCssLocator() { $this->module->amOnPage('/form/button_in_link'); $this->module->click(['css' => 'input[value="More Info"]']); $this->module->seeCurrentUrlEquals('/info'); } public function testClickButtonInLinkAndSpanUsingCssLocator() { $this->module->amOnPage('/form/button_in_link'); $this->module->click(['css' => 'input[value="Span Info"]']); $this->module->seeCurrentUrlEquals('/info'); } public function testClickHashLink() { $this->module->amOnPage('/form/anchor'); $this->module->click('Hash Link'); $this->module->seeCurrentUrlEquals('/form/anchor'); } public function testClickHashButton() { $this->module->amOnPage('/form/anchor'); $this->module->click('Hash Button'); $this->module->seeCurrentUrlEquals('/form/anchor'); } public function testSubmitHashForm() { $this->module->amOnPage('/form/anchor'); $this->module->click('Hash Form'); $this->module->seeCurrentUrlEquals('/form/anchor'); } public function testClickingRelativeLinkHonoursBaseHref() { $this->module->amOnPage('/basehref'); $this->module->click('Relative Link'); $this->module->seeCurrentUrlEquals('/form/example7'); } public function testSubmittingRelativeFormHonoursBaseHref() { $this->module->amOnPage('/basehref'); $this->module->click('Relative Form'); $this->module->seeCurrentUrlEquals('/form/example5'); } public function testClickingRelativeLinkInContextHonoursBaseHref() { $this->module->amOnPage('/basehref'); $this->module->click('Relative Link', 'p'); $this->module->seeCurrentUrlEquals('/form/example7'); } public function testSubmittingRelativeForminContextHonoursBaseHref() { $this->module->amOnPage('/basehref'); $this->module->fillField('rus', 'test value'); $this->module->click('Relative Form', '#button-container'); $this->module->seeCurrentUrlEquals('/form/example5'); } public function testClickingFormButtonInContextSubmitsOutOfContextFormElements() { $this->module->amOnPage('/basehref'); $this->module->click('Relative Form', '#button-container'); $this->assertArrayHasKey('rus', data::get('form')); } public function testAttachFileThrowsCorrectMessageWhenFileDoesNotExist() { $filename = 'does-not-exist.jpg'; $expectedMessage = 'File does not exist: ' . codecept_data_dir($filename); $this->setExpectedException('InvalidArgumentException', $expectedMessage); $this->module->amOnPage('/form/file'); $this->module->attachFile('Avatar', $filename); } public function testPasswordArgument() { $this->module->amOnPage('/form/password_argument'); $this->module->fillField('password', new \Codeception\Step\Argument\PasswordArgument('thisissecret')); $this->module->click('Submit'); $data = data::get('form'); $this->assertEquals('thisissecret', $data['password']); } }