diff --git a/server/cypress.json b/server/cypress.json
new file mode 100644
index 0000000..489903c
--- /dev/null
+++ b/server/cypress.json
@@ -0,0 +1,3 @@
+{
+ "baseUrl": "http://localhost:8080"
+}
\ No newline at end of file
diff --git a/server/cypress/fixtures/users.json b/server/cypress/fixtures/users.json
new file mode 100644
index 0000000..9b72eca
--- /dev/null
+++ b/server/cypress/fixtures/users.json
@@ -0,0 +1,81 @@
+[{
+ "email": "user1@mail.local",
+ "name": "Kathy Jordan",
+ "username": "kathy.jordan",
+ "password": "4jpbly8g6a",
+ "birthday": "08/08/1995",
+ "foreman": false,
+ "driver": false
+}, {
+ "email": "user2@mail.local",
+ "name": "Natalie Jordan",
+ "username": "natalie.jordan",
+ "password": "kf343di74s",
+ "birthday": "04/05/2011",
+ "foreman": true,
+ "driver": false
+}, {
+ "email": "user3@mail.local",
+ "name": "Keith Li",
+ "username": "keith.li",
+ "password": "3ojvgk4fpv",
+ "birthday": "11/04/2019",
+ "foreman": true,
+ "driver": true
+}, {
+ "email": "user4@mail.local",
+ "name": "Pellegrino Scotto",
+ "username": "pellegrino.scotto",
+ "password": "e0ou92taw3",
+ "birthday": "20/10/1983",
+ "foreman": true,
+ "driver": false
+}, {
+ "email": "user5@mail.local",
+ "name": "William Torres",
+ "username": "william.torres",
+ "password": "0fso8sxxe0",
+ "birthday": "16/07/2000",
+ "foreman": false,
+ "driver": true
+}, {
+ "email": "user6@mail.local",
+ "name": "Napoleone Tomasetti",
+ "username": "napoleone.tomasetti",
+ "password": "so7ykv8a7g",
+ "birthday": "27/12/1978",
+ "foreman": true,
+ "driver": true
+}, {
+ "email": "user7@mail.local",
+ "name": "Gelsomina Murray",
+ "username": "gelsomina.murray",
+ "password": "x1js0s6zao",
+ "birthday": "22/10/1994",
+ "foreman": true,
+ "driver": true
+}, {
+ "email": "user8@mail.local",
+ "name": "Letizia Petrucelli",
+ "username": "letizia.petrucelli",
+ "password": "k1hsbdt3cv",
+ "birthday": "24/04/1981",
+ "foreman": true,
+ "driver": false
+}, {
+ "email": "user9@mail.local",
+ "name": "Giampaolo Surian",
+ "username": "giampaolo.surian",
+ "password": "et52m65s4g",
+ "birthday": "10/06/1972",
+ "foreman": true,
+ "driver": true
+}, {
+ "email": "user10@mail.local",
+ "name": "Cassandra Jensen",
+ "username": "cassandra.jensen",
+ "password": "9h3fb37ccw",
+ "birthday": "28/10/1985",
+ "foreman": true,
+ "driver": false
+}]
\ No newline at end of file
diff --git a/server/cypress/integration/a_installation.spec.js b/server/cypress/integration/a_installation.spec.js
new file mode 100644
index 0000000..2d97335
--- /dev/null
+++ b/server/cypress/integration/a_installation.spec.js
@@ -0,0 +1,111 @@
+describe("Installation", () => {
+ before(() => {
+ cy.exec("rm config.old.php", {failOnNonZeroExit: false});
+ cy.exec("mv config.php config.old.php", {failOnNonZeroExit: false});
+ cy.exec("touch install/runInstall.php", {failOnNonZeroExit: false});
+ cy.visit("/");
+ cy.get(".button").click();
+ })
+ it('Write wrong DB pwd and user', function () {
+ cy.get("input[name='dbname']")
+ .clear()
+ .type("allerta_db_"+Date.now())
+
+ cy.get("input[name='uname']")
+ .clear()
+ .type("root_wrongpwd_"+Date.now())
+
+ cy.get("input[name='pwd']")
+ .clear()
+ .should('have.value', '')
+
+ cy.get(".button").click();
+ cy.contains("Error establishing a database connection");
+ cy.visit("/");
+ cy.get(".button").click();
+ })
+
+ it('Write correct DB pwd and user', function () {
+ cy.get("input[name='dbname']")
+ .clear()
+ .type("allerta_db_"+Date.now())
+
+ cy.get("input[name='uname']")
+ .clear()
+ .type("root")
+ .should('have.value', 'root')
+
+ cy.get("input[name='pwd']")
+ .clear()
+ .should('have.value', '')
+
+ cy.get(".button").click();
+ cy.contains("Great job, man!");
+ cy.get(".button").click();
+ })
+
+ it('Finish installation', function () {
+ cy.get("input[name='user_name']")
+ .clear()
+ .type("admin")
+ .should('have.value', 'admin')
+
+ cy.get("input[name='admin_password']")
+ .clear()
+ .type("password")
+ .should('have.value', 'password')
+ cy.get("#pass-strength-result")
+ .should('have.text', 'Very weak')
+ .should('have.class', 'short')
+
+ cy.get("input[name='admin_password']")
+ .clear()
+ .type("passsword")
+ .should('have.value', 'passsword')
+ cy.get("#pass-strength-result")
+ .should('have.text', 'Weak')
+ .should('have.class', 'bad')
+
+ cy.get("input[name='admin_password']")
+ .clear()
+ .type("Tr0ub4dour&3")
+ .should('have.value', 'Tr0ub4dour&3')
+ cy.get("#pass-strength-result")
+ .should('have.text', 'Good')
+ .should('have.class', 'good')
+
+ cy.get("input[name='admin_password']")
+ .clear()
+ .type("#Tr0ub4dour&3#")
+ .should('have.value', '#Tr0ub4dour&3#')
+ cy.get("#pass-strength-result")
+ .should('have.text', 'Strong')
+ .should('have.class', 'strong')
+
+ cy.get("input[name='admin_password']")
+ .clear()
+ .type("correcthorsebatterystaple")
+ .should('have.value', 'correcthorsebatterystaple')
+ cy.get("#pass-strength-result")
+ .should('have.text', 'Very strong')
+ .should('have.class', 'strong')
+
+ cy.get("input[name='admin_visible']").check()
+
+ cy.get("input[name='admin_email']")
+ .clear()
+ .type("admin_email@mail.local")
+ .should('have.value', 'admin_email@mail.local')
+
+ cy.get("input[name='owner']")
+ .clear()
+ .type("owner")
+ .should('have.value', 'owner')
+
+ cy.get(".button").click();
+ cy.contains("Great job, man!");
+ cy.get(".login").click();
+ cy.contains("Login");
+ cy.get(".acceptcookies").should('be.visible');
+ })
+});
\ No newline at end of file
diff --git a/server/cypress/integration/b_login.spec.js b/server/cypress/integration/b_login.spec.js
new file mode 100644
index 0000000..3872ba1
--- /dev/null
+++ b/server/cypress/integration/b_login.spec.js
@@ -0,0 +1,15 @@
+describe("Login and logout", () => {
+ it('Login', function () {
+ cy.login()
+ cy.contains("Logs").click()
+ cy.get("#list").contains("Login")
+ cy.visit("/logout.php")
+ cy.contains("Login")
+ })
+
+ it('Logout', function () {
+ cy.login()
+ cy.contains("Logs").click()
+ cy.get("#list").contains("Logout")
+ })
+});
\ No newline at end of file
diff --git a/server/cypress/integration/c_availability.spec.js b/server/cypress/integration/c_availability.spec.js
new file mode 100644
index 0000000..31187f5
--- /dev/null
+++ b/server/cypress/integration/c_availability.spec.js
@@ -0,0 +1,26 @@
+describe("Availability", () => {
+ beforeEach(() => {
+ cy.login()
+ })
+ it('Change availability to available', function () {
+ cy.contains('Active').click()
+ cy.on('window:alert',(txt)=>{
+ expect(txt).to.contains('Thanks, admin, you have given your availability in case of alert.');
+ })
+ cy.get(".fa-check").should('be.visible')
+ cy.contains("Logs").click()
+ cy.contains("Attivazione disponibilita'")
+ cy.visit("/")
+ })
+
+ it('Change availability to not available', function () {
+ cy.contains('Not Active').click()
+ cy.on('window:alert',(txt)=>{
+ expect(txt).to.contains('Thanks, admin, you have removed your availability in case of alert.');
+ })
+ cy.get(".fa-times").should('be.visible')
+ cy.contains("Logs").click()
+ cy.contains("Rimozione disponibilita'")
+ cy.visit("/")
+ })
+});
\ No newline at end of file
diff --git a/server/cypress/integration/d_users.spec.js b/server/cypress/integration/d_users.spec.js
new file mode 100644
index 0000000..f9fd19f
--- /dev/null
+++ b/server/cypress/integration/d_users.spec.js
@@ -0,0 +1,48 @@
+describe("User management", () => {
+ before(() => {
+ cy.login()
+ cy.fixture('users')
+ .as('users');
+ })
+ it('Create users', () => {
+ cy.get('@users')
+ .then((users) => {
+ users.forEach(user => {
+ name = user.name
+ console.log(user)
+ cy.wait(1000)
+ cy.contains("Add user").click()
+ cy.get("input[name='mail']")
+ .clear()
+ .type(user.email)
+ .should('have.value', user.email)
+ cy.get("input[name='name']")
+ .clear()
+ .type(user.name)
+ .should('have.value', user.name)
+ cy.get("input[name='username']")
+ .clear()
+ .type(user.username)
+ .should('have.value', user.username)
+ cy.get("input[name='password']")
+ .clear()
+ .type(user.password)
+ .should('have.value', user.password)
+ cy.get("input[name='birthday']")
+ .clear()
+ .type(user.birthday)
+ .should('have.value', user.birthday)
+ if(user.foreman){
+ cy.get("input[name='capo']")
+ .check({force: true})
+ }
+ if(user.driver){
+ cy.get("input[name='autista']")
+ .check({force: true})
+ }
+ cy.contains("Submit").click()
+ cy.contains(user.name)
+ })
+ })
+ });
+})
\ No newline at end of file
diff --git a/server/cypress/plugins/index.js b/server/cypress/plugins/index.js
new file mode 100644
index 0000000..6331375
--- /dev/null
+++ b/server/cypress/plugins/index.js
@@ -0,0 +1,37 @@
+///
+// ***********************************************************
+// This example plugins/index.js can be used to load plugins
+//
+// You can change the location of this file or turn off loading
+// the plugins file with the 'pluginsFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/plugins-guide
+// ***********************************************************
+
+// This function is called when a project is opened or re-opened (e.g. due to
+// the project's config changing)
+
+/**
+ * @type {Cypress.PluginConfig}
+ */
+module.exports = (on, config) => {
+ on('before:browser:launch', (browser = {}, launchOptions) => {
+ console.log(launchOptions) // print all current args
+
+ if (browser.family === 'chromium' && browser.name !== 'electron') {
+ launchOptions.preferences.default.intl = { accept_languages: "en" }
+ }
+
+ if (browser.family === 'firefox') {
+ launchOptions.preferences['intl.accept_languages'] = 'en'
+ }
+
+ if (browser.name === 'electron') {
+ launchOptions.args.push('--lang=en')
+ launchOptions.preferences.darkTheme = true
+ }
+
+ return launchOptions
+ })
+}
\ No newline at end of file
diff --git a/server/cypress/support/commands.js b/server/cypress/support/commands.js
new file mode 100644
index 0000000..30fe8d4
--- /dev/null
+++ b/server/cypress/support/commands.js
@@ -0,0 +1,42 @@
+// ***********************************************
+// This example commands.js shows you how to
+// create various custom commands and overwrite
+// existing commands.
+//
+// For more comprehensive examples of custom
+// commands please read more here:
+// https://on.cypress.io/custom-commands
+// ***********************************************
+//
+//
+// -- This is a parent command --
+Cypress.Commands.add("login", (username="admin", password="correcthorsebatterystaple") => {
+ cy.visit("/");
+ cy.getCookie('acceptCookies')
+ .then((c) => {
+ if(c == undefined) cy.get(".acceptcookies").click({force: true})
+ })
+ cy.get("input[name='name']")
+ .clear()
+ .type(username)
+ .should('have.value', username)
+
+ cy.get("input[name='password']")
+ .clear()
+ .type(password)
+ .should('have.value', password)
+
+ cy.get("input[name='login']").click()
+})
+//
+//
+// -- This is a child command --
+// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
+//
+//
+// -- This is a dual command --
+// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
+//
+//
+// -- This will overwrite an existing command --
+// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
diff --git a/server/cypress/support/index.js b/server/cypress/support/index.js
new file mode 100644
index 0000000..a0d200d
--- /dev/null
+++ b/server/cypress/support/index.js
@@ -0,0 +1,28 @@
+// ***********************************************************
+// This example support/index.js is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// Import commands.js using ES2015 syntax:
+import './commands'
+
+// Alternatively you can use CommonJS syntax:
+// require('./commands')
+
+/*
+cy.server({
+ onAnyRequest: (route, proxy) => {
+ proxy.xhr.setRequestHeader('CUSTOM-HEADER', 'Header value')
+ }
+})
+*/
\ No newline at end of file
diff --git a/server/install/install.php b/server/install/install.php
index 731ba6c..cee1253 100644
--- a/server/install/install.php
+++ b/server/install/install.php
@@ -161,33 +161,36 @@ if(!is_cli()){
var pwd = document.getElementById("pass1").value;
result = zxcvbn(pwd);
switch(result.score) {
- case 1:
+ case 0:
document.getElementById("pass1").className = "short";
document.getElementById("pass-strength-result").className = "short";
document.getElementById("pass-strength-result").innerHTML = "";
break;
- case 2:
+ case 1:
document.getElementById("pass1").className = "bad";
document.getElementById("pass-strength-result").className = "bad";
document.getElementById("pass-strength-result").innerHTML = "";
break;
- case 3:
+ case 2:
document.getElementById("pass1").className = "good";
document.getElementById("pass-strength-result").className = "good";
document.getElementById("pass-strength-result").innerHTML = "";
break;
- case 4:
+ case 3:
document.getElementById("pass1").className = "strong";
document.getElementById("pass-strength-result").className = "strong";
document.getElementById("pass-strength-result").innerHTML = "";
break;
- case 5:
+ case 4:
document.getElementById("pass1").className = "strong";
document.getElementById("pass-strength-result").className = "strong";
document.getElementById("pass-strength-result").innerHTML = "";
break;
default:
- // code block
+ document.getElementById("pass1").className = "short";
+ document.getElementById("pass-strength-result").className = "short";
+ document.getElementById("pass-strength-result").innerHTML = "";
+ break;
}
}
@@ -260,7 +263,7 @@ if(!is_cli()){
.
"); t("If you are ready, it's time to..."); ?>
-
+
"Il tuo",
"If %s doesn't work, you can get this information from your hosting provider" => "Se %s non funziona, richiedi queste informazioni al tuo fornitore di hosting",
"Edit this item if you want to perform multiple Alert installations on a single database" => "Modifica questo campo se vuoi installare più volte Allerta sullo stesso database",
- "Error establishing a database connection" => "Errore nela connessione con il database",
+ "Error establishing a database connection" => "Errore nella connessione con il database",
"This could mean that %s and %s in file %s are wrong or that we cannot contact database %s. It could mean that your database is unreachable" => "Questo può significare che %s e %s nel file %s sono sbagliati o che il database %s non funziona. Può significare che il database non funziona",
"Are you sure that %s and %s correct?" => "Sei sicuro che %s e %s siano corretti?",
"Are you sure you have entered the correct hostname?" => "Sei sicuro che l'hostname sia corretto?",
diff --git a/server/tests/_data/.gitkeep b/server/tests/_data/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/server/tests/_output/.gitkeep b/server/tests/_output/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/server/tests/_support/AcceptanceTester.php b/server/tests/_support/AcceptanceTester.php
deleted file mode 100644
index 95c00ec..0000000
--- a/server/tests/_support/AcceptanceTester.php
+++ /dev/null
@@ -1,26 +0,0 @@
-getScenario()->runStep(new \Codeception\Step\Action('setHeader', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Authenticates user for HTTP_AUTH
- *
- * @param $username
- * @param $password
- * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated()
- */
- public function amHttpAuthenticated($username, $password) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Open web page at the given absolute URL and sets its hostname as the base host.
- *
- * ``` php
- * amOnUrl('http://codeception.com');
- * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart
- * ?>
- * ```
- * @see \Codeception\Module\PhpBrowser::amOnUrl()
- */
- public function amOnUrl($url) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Changes the subdomain for the 'url' configuration parameter.
- * Does not open a page; use `amOnPage` for that.
- *
- * ``` php
- * amOnSubdomain('user');
- * $I->amOnPage('/');
- * // moves to http://user.mysite.com/
- * ?>
- * ```
- *
- * @param $subdomain
- *
- * @return mixed
- * @see \Codeception\Module\PhpBrowser::amOnSubdomain()
- */
- public function amOnSubdomain($subdomain) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Low-level API method.
- * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly
- *
- * Example:
- *
- * ``` php
- * executeInGuzzle(function (\GuzzleHttp\Client $client) {
- * $client->get('/get', ['query' => ['foo' => 'bar']]);
- * });
- * ?>
- * ```
- *
- * It is not recommended to use this command on a regular basis.
- * If Codeception lacks important Guzzle Client methods, implement them and submit patches.
- *
- * @param callable $function
- * @see \Codeception\Module\PhpBrowser::executeInGuzzle()
- */
- public function executeInGuzzle($function) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Sets the HTTP header to the passed value - which is used on
- * subsequent HTTP requests through PhpBrowser.
- *
- * Example:
- * ```php
- * haveHttpHeader('X-Requested-With', 'Codeception');
- * $I->amOnPage('test-headers.php');
- * ?>
- * ```
- *
- * To use special chars in Header Key use HTML Character Entities:
- * Example:
- * Header with underscore - 'Client_Id'
- * should be represented as - 'Client_Id' or 'Client_Id'
- *
- * ```php
- * haveHttpHeader('Client_Id', 'Codeception');
- * ?>
- * ```
- *
- * @param string $name the name of the request header
- * @param string $value the value to set it to for subsequent
- * requests
- * @see \Codeception\Lib\InnerBrowser::haveHttpHeader()
- */
- public function haveHttpHeader($name, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('haveHttpHeader', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Deletes the header with the passed name. Subsequent requests
- * will not have the deleted header in its request.
- *
- * Example:
- * ```php
- * haveHttpHeader('X-Requested-With', 'Codeception');
- * $I->amOnPage('test-headers.php');
- * // ...
- * $I->deleteHeader('X-Requested-With');
- * $I->amOnPage('some-other-page.php');
- * ?>
- * ```
- *
- * @param string $name the name of the header to delete.
- * @see \Codeception\Lib\InnerBrowser::deleteHeader()
- */
- public function deleteHeader($name) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Opens the page for the given relative URI.
- *
- * ``` php
- * amOnPage('/');
- * // opens /register page
- * $I->amOnPage('/register');
- * ```
- *
- * @param string $page
- * @see \Codeception\Lib\InnerBrowser::amOnPage()
- */
- public function amOnPage($page) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Perform a click on a link or a button, given by a locator.
- * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string.
- * For buttons, the "value" attribute, "name" attribute, and inner text are searched.
- * For links, the link text is searched.
- * For images, the "alt" attribute and inner text of any parent links are searched.
- *
- * The second parameter is a context (CSS or XPath locator) to narrow the search.
- *
- * Note that if the locator matches a button of type `submit`, the form will be submitted.
- *
- * ``` php
- * click('Logout');
- * // button of form
- * $I->click('Submit');
- * // CSS button
- * $I->click('#form input[type=submit]');
- * // XPath
- * $I->click('//form/*[@type="submit"]');
- * // link in context
- * $I->click('Logout', '#nav');
- * // using strict locator
- * $I->click(['link' => 'Login']);
- * ?>
- * ```
- *
- * @param $link
- * @param $context
- * @see \Codeception\Lib\InnerBrowser::click()
- */
- public function click($link, $context = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('click', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string (case insensitive).
- *
- * You can specify a specific HTML element (via CSS or XPath) as the second
- * parameter to only search within that element.
- *
- * ``` php
- * see('Logout'); // I can suppose user is logged in
- * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page
- * $I->see('Sign Up', '//body/h1'); // with XPath
- * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->see('strong')` will return true for strings like:
- *
- * - `
I am Stronger than thou
`
- * - ``
- *
- * But will *not* be true for strings like:
- *
- * - `Home`
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param string $text
- * @param array|string $selector optional
- * @see \Codeception\Lib\InnerBrowser::see()
- */
- public function see($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current page contains the given string (case insensitive).
- *
- * You can specify a specific HTML element (via CSS or XPath) as the second
- * parameter to only search within that element.
- *
- * ``` php
- * see('Logout'); // I can suppose user is logged in
- * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page
- * $I->see('Sign Up', '//body/h1'); // with XPath
- * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->see('strong')` will return true for strings like:
- *
- * - `
I am Stronger than thou
`
- * - ``
- *
- * But will *not* be true for strings like:
- *
- * - `Home`
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param string $text
- * @param array|string $selector optional
- * @see \Codeception\Lib\InnerBrowser::see()
- */
- public function canSee($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page doesn't contain the text specified (case insensitive).
- * Give a locator as the second parameter to match a specific region.
- *
- * ```php
- * dontSee('Login'); // I can suppose user is already logged in
- * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page
- * $I->dontSee('Sign Up','//body/h1'); // with XPath
- * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->dontSee('strong')` will fail on strings like:
- *
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param string $text
- * @param array|string $selector optional
- * @see \Codeception\Lib\InnerBrowser::dontSee()
- */
- public function dontSee($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSee', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current page doesn't contain the text specified (case insensitive).
- * Give a locator as the second parameter to match a specific region.
- *
- * ```php
- * dontSee('Login'); // I can suppose user is already logged in
- * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page
- * $I->dontSee('Sign Up','//body/h1'); // with XPath
- * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->dontSee('strong')` will fail on strings like:
- *
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param string $text
- * @param array|string $selector optional
- * @see \Codeception\Lib\InnerBrowser::dontSee()
- */
- public function cantSee($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ``` php
- * seeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * @see \Codeception\Lib\InnerBrowser::seeInSource()
- */
- public function seeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ``` php
- * seeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * @see \Codeception\Lib\InnerBrowser::seeInSource()
- */
- public function canSeeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ```php
- * dontSeeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * @see \Codeception\Lib\InnerBrowser::dontSeeInSource()
- */
- public function dontSeeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInSource', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ```php
- * dontSeeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * @see \Codeception\Lib\InnerBrowser::dontSeeInSource()
- */
- public function cantSeeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that there's a link with the specified text.
- * Give a full URL as the second parameter to match links with that exact URL.
- *
- * ``` php
- * seeLink('Logout'); // matches Logout
- * $I->seeLink('Logout','/logout'); // matches Logout
- * ?>
- * ```
- *
- * @param string $text
- * @param string $url optional
- * @see \Codeception\Lib\InnerBrowser::seeLink()
- */
- public function seeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that there's a link with the specified text.
- * Give a full URL as the second parameter to match links with that exact URL.
- *
- * ``` php
- * seeLink('Logout'); // matches Logout
- * $I->seeLink('Logout','/logout'); // matches Logout
- * ?>
- * ```
- *
- * @param string $text
- * @param string $url optional
- * @see \Codeception\Lib\InnerBrowser::seeLink()
- */
- public function canSeeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the page doesn't contain a link with the given string.
- * If the second parameter is given, only links with a matching "href" attribute will be checked.
- *
- * ``` php
- * dontSeeLink('Logout'); // I suppose user is not logged in
- * $I->dontSeeLink('Checkout now', '/store/cart.php');
- * ?>
- * ```
- *
- * @param string $text
- * @param string $url optional
- * @see \Codeception\Lib\InnerBrowser::dontSeeLink()
- */
- public function dontSeeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeLink', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the page doesn't contain a link with the given string.
- * If the second parameter is given, only links with a matching "href" attribute will be checked.
- *
- * ``` php
- * dontSeeLink('Logout'); // I suppose user is not logged in
- * $I->dontSeeLink('Checkout now', '/store/cart.php');
- * ?>
- * ```
- *
- * @param string $text
- * @param string $url optional
- * @see \Codeception\Lib\InnerBrowser::dontSeeLink()
- */
- public function cantSeeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that current URI contains the given string.
- *
- * ``` php
- * seeInCurrentUrl('home');
- * // to match: /users/1
- * $I->seeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl()
- */
- public function seeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that current URI contains the given string.
- *
- * ``` php
- * seeInCurrentUrl('home');
- * // to match: /users/1
- * $I->seeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl()
- */
- public function canSeeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URI doesn't contain the given string.
- *
- * ``` php
- * dontSeeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl()
- */
- public function dontSeeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInCurrentUrl', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current URI doesn't contain the given string.
- *
- * ``` php
- * dontSeeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl()
- */
- public function cantSeeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL is equal to the given string.
- * Unlike `seeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * seeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals()
- */
- public function seeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current URL is equal to the given string.
- * Unlike `seeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * seeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals()
- */
- public function canSeeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL doesn't equal the given string.
- * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * dontSeeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals()
- */
- public function dontSeeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCurrentUrlEquals', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current URL doesn't equal the given string.
- * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * dontSeeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals()
- */
- public function cantSeeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL matches the given regular expression.
- *
- * ``` php
- * seeCurrentUrlMatches('~^/users/(\d+)~');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches()
- */
- public function seeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the current URL matches the given regular expression.
- *
- * ``` php
- * seeCurrentUrlMatches('~^/users/(\d+)~');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches()
- */
- public function canSeeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that current url doesn't match the given regular expression.
- *
- * ``` php
- * dontSeeCurrentUrlMatches('~^/users/(\d+)~');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches()
- */
- public function dontSeeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCurrentUrlMatches', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that current url doesn't match the given regular expression.
- *
- * ``` php
- * dontSeeCurrentUrlMatches('~^/users/(\d+)~');
- * ?>
- * ```
- *
- * @param string $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches()
- */
- public function cantSeeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Executes the given regular expression against the current URI and returns the first capturing group.
- * If no parameters are provided, the full URI is returned.
- *
- * ``` php
- * grabFromCurrentUrl('~^/user/(\d+)/~');
- * $uri = $I->grabFromCurrentUrl();
- * ?>
- * ```
- *
- * @param string $uri optional
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl()
- */
- public function grabFromCurrentUrl($uri = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the specified checkbox is checked.
- *
- * ``` php
- * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
- * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
- * ?>
- * ```
- *
- * @param $checkbox
- * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked()
- */
- public function seeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the specified checkbox is checked.
- *
- * ``` php
- * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
- * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
- * ?>
- * ```
- *
- * @param $checkbox
- * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked()
- */
- public function canSeeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Check that the specified checkbox is unchecked.
- *
- * ``` php
- * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
- * ?>
- * ```
- *
- * @param $checkbox
- * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked()
- */
- public function dontSeeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCheckboxIsChecked', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Check that the specified checkbox is unchecked.
- *
- * ``` php
- * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
- * ?>
- * ```
- *
- * @param $checkbox
- * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked()
- */
- public function cantSeeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given input field or textarea *equals* (i.e. not just contains) the given value.
- * Fields are matched by label text, the "name" attribute, CSS, or XPath.
- *
- * ``` php
- * seeInField('Body','Type your comment here');
- * $I->seeInField('form textarea[name=body]','Type your comment here');
- * $I->seeInField('form input[type=hidden]','hidden_value');
- * $I->seeInField('#searchform input','Search');
- * $I->seeInField('//form/*[@name=search]','Search');
- * $I->seeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::seeInField()
- */
- public function seeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the given input field or textarea *equals* (i.e. not just contains) the given value.
- * Fields are matched by label text, the "name" attribute, CSS, or XPath.
- *
- * ``` php
- * seeInField('Body','Type your comment here');
- * $I->seeInField('form textarea[name=body]','Type your comment here');
- * $I->seeInField('form input[type=hidden]','hidden_value');
- * $I->seeInField('#searchform input','Search');
- * $I->seeInField('//form/*[@name=search]','Search');
- * $I->seeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::seeInField()
- */
- public function canSeeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that an input field or textarea doesn't contain the given value.
- * For fuzzy locators, the field is matched by label text, CSS and XPath.
- *
- * ``` php
- * dontSeeInField('Body','Type your comment here');
- * $I->dontSeeInField('form textarea[name=body]','Type your comment here');
- * $I->dontSeeInField('form input[type=hidden]','hidden_value');
- * $I->dontSeeInField('#searchform input','Search');
- * $I->dontSeeInField('//form/*[@name=search]','Search');
- * $I->dontSeeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::dontSeeInField()
- */
- public function dontSeeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInField', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that an input field or textarea doesn't contain the given value.
- * For fuzzy locators, the field is matched by label text, CSS and XPath.
- *
- * ``` php
- * dontSeeInField('Body','Type your comment here');
- * $I->dontSeeInField('form textarea[name=body]','Type your comment here');
- * $I->dontSeeInField('form input[type=hidden]','hidden_value');
- * $I->dontSeeInField('#searchform input','Search');
- * $I->dontSeeInField('//form/*[@name=search]','Search');
- * $I->dontSeeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::dontSeeInField()
- */
- public function cantSeeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks if the array of form parameters (name => value) are set on the form matched with the
- * passed selector.
- *
- * ``` php
- * seeInFormFields('form[name=myform]', [
- * 'input1' => 'value',
- * 'input2' => 'other value',
- * ]);
- * ?>
- * ```
- *
- * For multi-select elements, or to check values of multiple elements with the same name, an
- * array may be passed:
- *
- * ``` php
- * seeInFormFields('.form-class', [
- * 'multiselect' => [
- * 'value1',
- * 'value2',
- * ],
- * 'checkbox[]' => [
- * 'a checked value',
- * 'another checked value',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * seeInFormFields('#form-id', [
- * 'checkbox1' => true, // passes if checked
- * 'checkbox2' => false, // passes if unchecked
- * ]);
- * ?>
- * ```
- *
- * Pair this with submitForm for quick testing magic.
- *
- * ``` php
- * 'value',
- * 'field2' => 'another value',
- * 'checkbox1' => true,
- * // ...
- * ];
- * $I->submitForm('//form[@id=my-form]', $form, 'submitButton');
- * // $I->amOnPage('/path/to/form-page') may be needed
- * $I->seeInFormFields('//form[@id=my-form]', $form);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::seeInFormFields()
- */
- public function seeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks if the array of form parameters (name => value) are set on the form matched with the
- * passed selector.
- *
- * ``` php
- * seeInFormFields('form[name=myform]', [
- * 'input1' => 'value',
- * 'input2' => 'other value',
- * ]);
- * ?>
- * ```
- *
- * For multi-select elements, or to check values of multiple elements with the same name, an
- * array may be passed:
- *
- * ``` php
- * seeInFormFields('.form-class', [
- * 'multiselect' => [
- * 'value1',
- * 'value2',
- * ],
- * 'checkbox[]' => [
- * 'a checked value',
- * 'another checked value',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * seeInFormFields('#form-id', [
- * 'checkbox1' => true, // passes if checked
- * 'checkbox2' => false, // passes if unchecked
- * ]);
- * ?>
- * ```
- *
- * Pair this with submitForm for quick testing magic.
- *
- * ``` php
- * 'value',
- * 'field2' => 'another value',
- * 'checkbox1' => true,
- * // ...
- * ];
- * $I->submitForm('//form[@id=my-form]', $form, 'submitButton');
- * // $I->amOnPage('/path/to/form-page') may be needed
- * $I->seeInFormFields('//form[@id=my-form]', $form);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::seeInFormFields()
- */
- public function canSeeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks if the array of form parameters (name => value) are not set on the form matched with
- * the passed selector.
- *
- * ``` php
- * dontSeeInFormFields('form[name=myform]', [
- * 'input1' => 'non-existent value',
- * 'input2' => 'other non-existent value',
- * ]);
- * ?>
- * ```
- *
- * To check that an element hasn't been assigned any one of many values, an array can be passed
- * as the value:
- *
- * ``` php
- * dontSeeInFormFields('.form-class', [
- * 'fieldName' => [
- * 'This value shouldn\'t be set',
- * 'And this value shouldn\'t be set',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * dontSeeInFormFields('#form-id', [
- * 'checkbox1' => true, // fails if checked
- * 'checkbox2' => false, // fails if unchecked
- * ]);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields()
- */
- public function dontSeeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInFormFields', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks if the array of form parameters (name => value) are not set on the form matched with
- * the passed selector.
- *
- * ``` php
- * dontSeeInFormFields('form[name=myform]', [
- * 'input1' => 'non-existent value',
- * 'input2' => 'other non-existent value',
- * ]);
- * ?>
- * ```
- *
- * To check that an element hasn't been assigned any one of many values, an array can be passed
- * as the value:
- *
- * ``` php
- * dontSeeInFormFields('.form-class', [
- * 'fieldName' => [
- * 'This value shouldn\'t be set',
- * 'And this value shouldn\'t be set',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * dontSeeInFormFields('#form-id', [
- * 'checkbox1' => true, // fails if checked
- * 'checkbox2' => false, // fails if unchecked
- * ]);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields()
- */
- public function cantSeeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Submits the given form on the page, with the given form
- * values. Pass the form field's values as an array in the second
- * parameter.
- *
- * Although this function can be used as a short-hand version of
- * `fillField()`, `selectOption()`, `click()` etc. it has some important
- * differences:
- *
- * * Only field *names* may be used, not CSS/XPath selectors nor field labels
- * * If a field is sent to this function that does *not* exist on the page,
- * it will silently be added to the HTTP request. This is helpful for testing
- * some types of forms, but be aware that you will *not* get an exception
- * like you would if you called `fillField()` or `selectOption()` with
- * a missing field.
- *
- * Fields that are not provided will be filled by their values from the page,
- * or from any previous calls to `fillField()`, `selectOption()` etc.
- * You don't need to click the 'Submit' button afterwards.
- * This command itself triggers the request to form's action.
- *
- * You can optionally specify which button's value to include
- * in the request with the last parameter (as an alternative to
- * explicitly setting its value in the second parameter), as
- * button values are not otherwise included in the request.
- *
- * Examples:
- *
- * ``` php
- * submitForm('#login', [
- * 'login' => 'davert',
- * 'password' => '123456'
- * ]);
- * // or
- * $I->submitForm('#login', [
- * 'login' => 'davert',
- * 'password' => '123456'
- * ], 'submitButtonName');
- *
- * ```
- *
- * For example, given this sample "Sign Up" form:
- *
- * ``` html
- *
- * ```
- *
- * You could write the following to submit it:
- *
- * ``` php
- * submitForm(
- * '#userForm',
- * [
- * 'user' => [
- * 'login' => 'Davert',
- * 'password' => '123456',
- * 'agree' => true
- * ]
- * ],
- * 'submitButton'
- * );
- * ```
- * Note that "2" will be the submitted value for the "plan" field, as it is
- * the selected option.
- *
- * You can also emulate a JavaScript submission by not specifying any
- * buttons in the third parameter to submitForm.
- *
- * ```php
- * submitForm(
- * '#userForm',
- * [
- * 'user' => [
- * 'login' => 'Davert',
- * 'password' => '123456',
- * 'agree' => true
- * ]
- * ]
- * );
- * ```
- *
- * This function works well when paired with `seeInFormFields()`
- * for quickly testing CRUD interfaces and form validation logic.
- *
- * ``` php
- * 'value',
- * 'field2' => 'another value',
- * 'checkbox1' => true,
- * // ...
- * ];
- * $I->submitForm('#my-form', $form, 'submitButton');
- * // $I->amOnPage('/path/to/form-page') may be needed
- * $I->seeInFormFields('#my-form', $form);
- * ```
- *
- * Parameter values can be set to arrays for multiple input fields
- * of the same name, or multi-select combo boxes. For checkboxes,
- * you can use either the string value or boolean `true`/`false` which will
- * be replaced by the checkbox's value in the DOM.
- *
- * ``` php
- * submitForm('#my-form', [
- * 'field1' => 'value',
- * 'checkbox' => [
- * 'value of first checkbox',
- * 'value of second checkbox',
- * ],
- * 'otherCheckboxes' => [
- * true,
- * false,
- * false
- * ],
- * 'multiselect' => [
- * 'first option value',
- * 'second option value'
- * ]
- * ]);
- * ```
- *
- * Mixing string and boolean values for a checkbox's value is not supported
- * and may produce unexpected results.
- *
- * Field names ending in `[]` must be passed without the trailing square
- * bracket characters, and must contain an array for its value. This allows
- * submitting multiple values with the same name, consider:
- *
- * ```php
- * submitForm('#my-form', [
- * 'field[]' => 'value',
- * 'field[]' => 'another value', // 'field[]' is already a defined key
- * ]);
- * ```
- *
- * The solution is to pass an array value:
- *
- * ```php
- * submitForm('#my-form', [
- * 'field' => [
- * 'value',
- * 'another value',
- * ]
- * ]);
- * ```
- *
- * @param $selector
- * @param $params
- * @param $button
- * @see \Codeception\Lib\InnerBrowser::submitForm()
- */
- public function submitForm($selector, $params, $button = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('submitForm', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Fills a text field or textarea with the given string.
- *
- * ``` php
- * fillField("//input[@type='text']", "Hello World!");
- * $I->fillField(['name' => 'email'], 'jon@mail.com');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::fillField()
- */
- public function fillField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('fillField', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Selects an option in a select tag or in radio button group.
- *
- * ``` php
- * selectOption('form select[name=account]', 'Premium');
- * $I->selectOption('form input[name=payment]', 'Monthly');
- * $I->selectOption('//form/select[@name=account]', 'Monthly');
- * ?>
- * ```
- *
- * Provide an array for the second argument to select multiple options:
- *
- * ``` php
- * selectOption('Which OS do you use?', array('Windows','Linux'));
- * ?>
- * ```
- *
- * Or provide an associative array for the second argument to specifically define which selection method should be used:
- *
- * ``` php
- * selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows'
- * $I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows'
- * ?>
- * ```
- *
- * @param $select
- * @param $option
- * @see \Codeception\Lib\InnerBrowser::selectOption()
- */
- public function selectOption($select, $option) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('selectOption', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Ticks a checkbox. For radio buttons, use the `selectOption` method instead.
- *
- * ``` php
- * checkOption('#agree');
- * ?>
- * ```
- *
- * @param $option
- * @see \Codeception\Lib\InnerBrowser::checkOption()
- */
- public function checkOption($option) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('checkOption', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Unticks a checkbox.
- *
- * ``` php
- * uncheckOption('#notify');
- * ?>
- * ```
- *
- * @param $option
- * @see \Codeception\Lib\InnerBrowser::uncheckOption()
- */
- public function uncheckOption($option) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Attaches a file relative to the Codeception `_data` directory to the given file upload field.
- *
- * ``` php
- * attachFile('input[@type="file"]', 'prices.xls');
- * ?>
- * ```
- *
- * @param $field
- * @param $filename
- * @see \Codeception\Lib\InnerBrowser::attachFile()
- */
- public function attachFile($field, $filename) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('attachFile', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * If your page triggers an ajax request, you can perform it manually.
- * This action sends a GET ajax request with specified params.
- *
- * See ->sendAjaxPostRequest for examples.
- *
- * @param $uri
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest()
- */
- public function sendAjaxGetRequest($uri, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * If your page triggers an ajax request, you can perform it manually.
- * This action sends a POST ajax request with specified params.
- * Additional params can be passed as array.
- *
- * Example:
- *
- * Imagine that by clicking checkbox you trigger ajax request which updates user settings.
- * We emulate that click by running this ajax request manually.
- *
- * ``` php
- * sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST
- * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET
- *
- * ```
- *
- * @param $uri
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest()
- */
- public function sendAjaxPostRequest($uri, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * If your page triggers an ajax request, you can perform it manually.
- * This action sends an ajax request with specified method and params.
- *
- * Example:
- *
- * You need to perform an ajax request specifying the HTTP method.
- *
- * ``` php
- * sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title'));
- *
- * ```
- *
- * @param $method
- * @param $uri
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest()
- */
- public function sendAjaxRequest($method, $uri, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Saves current page's HTML into a temprary file.
- * Use this method in debug mode within an interactive pause to get a source code of current page.
- *
- * ```php
- * makeHtmlSnapshot('edit_page');
- * // saved to: tests/_output/debug/edit_page.html
- * $I->makeHtmlSnapshot();
- * // saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.html
- * ```
- *
- * @param null $name
- * @see \Codeception\Lib\InnerBrowser::makeHtmlSnapshot()
- */
- public function makeHtmlSnapshot($name = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('makeHtmlSnapshot', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Finds and returns the text contents of the given element.
- * If a fuzzy locator is used, the element is found using CSS, XPath,
- * and by matching the full page source by regular expression.
- *
- * ``` php
- * grabTextFrom('h1');
- * $heading = $I->grabTextFrom('descendant-or-self::h1');
- * $value = $I->grabTextFrom('~
- * ```
- *
- * @param $cssOrXPathOrRegex
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::grabTextFrom()
- */
- public function grabTextFrom($cssOrXPathOrRegex) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Grabs the value of the given attribute value from the given element.
- * Fails if element is not found.
- *
- * ``` php
- * grabAttributeFrom('#tooltip', 'title');
- * ?>
- * ```
- *
- *
- * @param $cssOrXpath
- * @param $attribute
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom()
- */
- public function grabAttributeFrom($cssOrXpath, $attribute) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Grabs either the text content, or attribute values, of nodes
- * matched by $cssOrXpath and returns them as an array.
- *
- * ```html
- * First
- * Second
- * Third
- * ```
- *
- * ```php
- * grabMultiple('a');
- *
- * // would return ['#first', '#second', '#third']
- * $aLinks = $I->grabMultiple('a', 'href');
- * ?>
- * ```
- *
- * @param $cssOrXpath
- * @param $attribute
- * @return string[]
- * @see \Codeception\Lib\InnerBrowser::grabMultiple()
- */
- public function grabMultiple($cssOrXpath, $attribute = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabMultiple', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * @param $field
- *
- * @return array|mixed|null|string
- * @see \Codeception\Lib\InnerBrowser::grabValueFrom()
- */
- public function grabValueFrom($field) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Sets a cookie with the given name and value.
- * You can set additional cookie params like `domain`, `path`, `expires`, `secure` in array passed as last argument.
- *
- * ``` php
- * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3');
- * ?>
- * ```
- *
- * @param $name
- * @param $val
- * @param array $params
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::setCookie()
- */
- public function setCookie($name, $val, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('setCookie', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Grabs a cookie value.
- * You can set additional cookie params like `domain`, `path` in array passed as last argument.
- *
- * @param $cookie
- *
- * @param array $params
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::grabCookie()
- */
- public function grabCookie($cookie, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabCookie', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Grabs current page source code.
- *
- * @throws ModuleException if no page was opened.
- *
- * @return string Current page source code.
- * @see \Codeception\Lib\InnerBrowser::grabPageSource()
- */
- public function grabPageSource() {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabPageSource', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that a cookie with the given name is set.
- * You can set additional cookie params like `domain`, `path` as array passed in last argument.
- *
- * ``` php
- * seeCookie('PHPSESSID');
- * ?>
- * ```
- *
- * @param $cookie
- * @param array $params
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::seeCookie()
- */
- public function seeCookie($cookie, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that a cookie with the given name is set.
- * You can set additional cookie params like `domain`, `path` as array passed in last argument.
- *
- * ``` php
- * seeCookie('PHPSESSID');
- * ?>
- * ```
- *
- * @param $cookie
- * @param array $params
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::seeCookie()
- */
- public function canSeeCookie($cookie, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that there isn't a cookie with the given name.
- * You can set additional cookie params like `domain`, `path` as array passed in last argument.
- *
- * @param $cookie
- *
- * @param array $params
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::dontSeeCookie()
- */
- public function dontSeeCookie($cookie, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCookie', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that there isn't a cookie with the given name.
- * You can set additional cookie params like `domain`, `path` as array passed in last argument.
- *
- * @param $cookie
- *
- * @param array $params
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::dontSeeCookie()
- */
- public function cantSeeCookie($cookie, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Unsets cookie with the given name.
- * You can set additional cookie params like `domain`, `path` in array passed as last argument.
- *
- * @param $cookie
- *
- * @param array $params
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::resetCookie()
- */
- public function resetCookie($name, $params = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('resetCookie', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given element exists on the page and is visible.
- * You can also specify expected attributes of this element.
- *
- * ``` php
- * seeElement('.error');
- * $I->seeElement('//form/input[1]');
- * $I->seeElement('input', ['name' => 'login']);
- * $I->seeElement('input', ['value' => '123456']);
- *
- * // strict locator in first arg, attributes in second
- * $I->seeElement(['css' => 'form input'], ['name' => 'login']);
- * ?>
- * ```
- *
- * @param $selector
- * @param array $attributes
- * @return
- * @see \Codeception\Lib\InnerBrowser::seeElement()
- */
- public function seeElement($selector, $attributes = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the given element exists on the page and is visible.
- * You can also specify expected attributes of this element.
- *
- * ``` php
- * seeElement('.error');
- * $I->seeElement('//form/input[1]');
- * $I->seeElement('input', ['name' => 'login']);
- * $I->seeElement('input', ['value' => '123456']);
- *
- * // strict locator in first arg, attributes in second
- * $I->seeElement(['css' => 'form input'], ['name' => 'login']);
- * ?>
- * ```
- *
- * @param $selector
- * @param array $attributes
- * @return
- * @see \Codeception\Lib\InnerBrowser::seeElement()
- */
- public function canSeeElement($selector, $attributes = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given element is invisible or not present on the page.
- * You can also specify expected attributes of this element.
- *
- * ``` php
- * dontSeeElement('.error');
- * $I->dontSeeElement('//form/input[1]');
- * $I->dontSeeElement('input', ['name' => 'login']);
- * $I->dontSeeElement('input', ['value' => '123456']);
- * ?>
- * ```
- *
- * @param $selector
- * @param array $attributes
- * @see \Codeception\Lib\InnerBrowser::dontSeeElement()
- */
- public function dontSeeElement($selector, $attributes = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeElement', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the given element is invisible or not present on the page.
- * You can also specify expected attributes of this element.
- *
- * ``` php
- * dontSeeElement('.error');
- * $I->dontSeeElement('//form/input[1]');
- * $I->dontSeeElement('input', ['name' => 'login']);
- * $I->dontSeeElement('input', ['value' => '123456']);
- * ?>
- * ```
- *
- * @param $selector
- * @param array $attributes
- * @see \Codeception\Lib\InnerBrowser::dontSeeElement()
- */
- public function cantSeeElement($selector, $attributes = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that there are a certain number of elements matched by the given locator on the page.
- *
- * ``` php
- * seeNumberOfElements('tr', 10);
- * $I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements
- * ?>
- * ```
- * @param $selector
- * @param mixed $expected int or int[]
- * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements()
- */
- public function seeNumberOfElements($selector, $expected) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that there are a certain number of elements matched by the given locator on the page.
- *
- * ``` php
- * seeNumberOfElements('tr', 10);
- * $I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements
- * ?>
- * ```
- * @param $selector
- * @param mixed $expected int or int[]
- * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements()
- */
- public function canSeeNumberOfElements($selector, $expected) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given option is selected.
- *
- * ``` php
- * seeOptionIsSelected('#form input[name=payment]', 'Visa');
- * ?>
- * ```
- *
- * @param $selector
- * @param $optionText
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected()
- */
- public function seeOptionIsSelected($selector, $optionText) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the given option is selected.
- *
- * ``` php
- * seeOptionIsSelected('#form input[name=payment]', 'Visa');
- * ?>
- * ```
- *
- * @param $selector
- * @param $optionText
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected()
- */
- public function canSeeOptionIsSelected($selector, $optionText) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given option is not selected.
- *
- * ``` php
- * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
- * ?>
- * ```
- *
- * @param $selector
- * @param $optionText
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected()
- */
- public function dontSeeOptionIsSelected($selector, $optionText) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeOptionIsSelected', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the given option is not selected.
- *
- * ``` php
- * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
- * ?>
- * ```
- *
- * @param $selector
- * @param $optionText
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected()
- */
- public function cantSeeOptionIsSelected($selector, $optionText) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Asserts that current page has 404 response status code.
- * @see \Codeception\Lib\InnerBrowser::seePageNotFound()
- */
- public function seePageNotFound() {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Asserts that current page has 404 response status code.
- * @see \Codeception\Lib\InnerBrowser::seePageNotFound()
- */
- public function canSeePageNotFound() {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that response code is equal to value provided.
- *
- * ```php
- * seeResponseCodeIs(200);
- *
- * // recommended \Codeception\Util\HttpCode
- * $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
- * ```
- *
- * @param $code
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs()
- */
- public function seeResponseCodeIs($code) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that response code is equal to value provided.
- *
- * ```php
- * seeResponseCodeIs(200);
- *
- * // recommended \Codeception\Util\HttpCode
- * $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
- * ```
- *
- * @param $code
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs()
- */
- public function canSeeResponseCodeIs($code) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that response code is between a certain range. Between actually means [from <= CODE <= to]
- *
- * @param $from
- * @param $to
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsBetween()
- */
- public function seeResponseCodeIsBetween($from, $to) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsBetween', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that response code is between a certain range. Between actually means [from <= CODE <= to]
- *
- * @param $from
- * @param $to
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsBetween()
- */
- public function canSeeResponseCodeIsBetween($from, $to) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsBetween', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that response code is equal to value provided.
- *
- * ```php
- * dontSeeResponseCodeIs(200);
- *
- * // recommended \Codeception\Util\HttpCode
- * $I->dontSeeResponseCodeIs(\Codeception\Util\HttpCode::OK);
- * ```
- * @param $code
- * @see \Codeception\Lib\InnerBrowser::dontSeeResponseCodeIs()
- */
- public function dontSeeResponseCodeIs($code) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeResponseCodeIs', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that response code is equal to value provided.
- *
- * ```php
- * dontSeeResponseCodeIs(200);
- *
- * // recommended \Codeception\Util\HttpCode
- * $I->dontSeeResponseCodeIs(\Codeception\Util\HttpCode::OK);
- * ```
- * @param $code
- * @see \Codeception\Lib\InnerBrowser::dontSeeResponseCodeIs()
- */
- public function cantSeeResponseCodeIs($code) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeResponseCodeIs', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the response code 2xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsSuccessful()
- */
- public function seeResponseCodeIsSuccessful() {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsSuccessful', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the response code 2xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsSuccessful()
- */
- public function canSeeResponseCodeIsSuccessful() {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsSuccessful', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the response code 3xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsRedirection()
- */
- public function seeResponseCodeIsRedirection() {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsRedirection', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the response code 3xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsRedirection()
- */
- public function canSeeResponseCodeIsRedirection() {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsRedirection', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the response code is 4xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsClientError()
- */
- public function seeResponseCodeIsClientError() {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsClientError', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the response code is 4xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsClientError()
- */
- public function canSeeResponseCodeIsClientError() {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsClientError', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the response code is 5xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsServerError()
- */
- public function seeResponseCodeIsServerError() {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsServerError', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the response code is 5xx
- * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsServerError()
- */
- public function canSeeResponseCodeIsServerError() {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsServerError', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the page title contains the given string.
- *
- * ``` php
- * seeInTitle('Blog - Post #1');
- * ?>
- * ```
- *
- * @param $title
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::seeInTitle()
- */
- public function seeInTitle($title) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the page title contains the given string.
- *
- * ``` php
- * seeInTitle('Blog - Post #1');
- * ?>
- * ```
- *
- * @param $title
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::seeInTitle()
- */
- public function canSeeInTitle($title) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the page title does not contain the given string.
- *
- * @param $title
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle()
- */
- public function dontSeeInTitle($title) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInTitle', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * [!] Conditional Assertion: Test won't be stopped on fail
- * Checks that the page title does not contain the given string.
- *
- * @param $title
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle()
- */
- public function cantSeeInTitle($title) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Switch to iframe or frame on the page.
- *
- * Example:
- * ``` html
- *