Beispiel #1
0
 /**
  * @depends openMatvid
  */
 public function openCreateMatvid(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'matvid-form']);
 }
Beispiel #2
0
 public function ensureThatHomePageWorks(AcceptanceTester $I)
 {
     $I->amOnPage(Url::toRoute('/site/index'));
     $I->see('My Company');
     $I->seeLink('About');
     $I->click('About');
     $I->see('This is the About page.');
 }
Beispiel #3
0
 public function seeNavBar(\AcceptanceTester $I)
 {
     $I->wantTo('See the navbar links');
     $I->seeLink('News');
     $I->seeLink('Members');
     $I->seeLink('Warlog');
     $I->seeLink('Media');
     $I->seeLink('Live');
     $I->seeLink('Apply Now');
     $I->seeLink('Login');
     $I->seeLink('Register');
 }
Beispiel #4
0
 public function register(\AcceptanceTester $I)
 {
     $I->amGoingTo('register');
     $I->amOnPage('/auth/register');
     $I->fillField('name', 'codeception');
     $I->fillField('password', 'acceptance');
     $I->fillField('email', '*****@*****.**');
     $I->click('submit');
     $I->see('Registered successfully!');
     $I->seeLink('Go back to Home');
     $I->click('Go back to Home');
     $I->seeInCurrentUrl('/');
 }
Beispiel #5
0
 /**
  * @depends saveCreateBuild
  */
 public function checkUniqueBuild(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'build-form']);
     $I->fillField('Build[build_name]', 'Поликлиника 1');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(1);
     $I->see('Здание = Поликлиника 1 уже существует');
     $I->click(['id' => 'backbutton']);
     $I->wait(2);
     $I->seeElement(['id' => 'buildgrid_gw']);
 }
Beispiel #6
0
 /**
  * @depends saveCreatePodraz
  */
 public function checkUniquePodraz(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'podraz-form']);
     $I->fillField('Podraz[podraz_name]', 'Стационар');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(1);
     $I->see('Подразделение = Стационар уже существует');
     $I->click(['id' => 'backbutton']);
     $I->wait(2);
     $I->seeElement(['id' => 'podrazgrid_gw']);
 }
Beispiel #7
0
 /**
  * @depends saveCreateOrgan
  */
 public function checkUniqueOrgan(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'organ-form']);
     $I->fillField('Organ[organ_name]', 'Рога и копыта');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(1);
     $I->see('Организация = Рога и копыта уже существует');
     $I->click(['id' => 'backbutton']);
     $I->wait(2);
     $I->seeElement(['id' => 'organgrid_gw']);
 }
 /**
  * @depends saveCreatePreparat
  */
 public function checkUniquePreparat(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'preparat-form']);
     $I->fillField('Preparat[preparat_name]', 'Препарат');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(1);
     $I->see('Наименование препарата = Препарат уже существует');
     $I->click(['id' => 'backbutton']);
     $I->wait(2);
     $I->seeElement(['id' => 'preparatgrid_gw']);
 }
Beispiel #9
0
 /**
  * @depends saveCreateDolzh
  */
 public function checkUniqueDolzh(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'dolzh-form']);
     $I->fillField('Dolzh[dolzh_name]', 'Медсестра');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(1);
     $I->see('Должность = Медсестра уже существует');
     $I->click(['id' => 'backbutton']);
     $I->wait(2);
     $I->seeElement(['id' => 'dolzhgrid_gw']);
 }
 /**
  * @depends saveCreateSchetuchet
  */
 public function checkUniqueSchetuchet(AcceptanceTester $I)
 {
     $I->seeLink('Добавить');
     $I->click(['link' => 'Добавить']);
     $I->wait(2);
     $I->seeElement(['class' => 'schetuchet-form']);
     $I->fillField('Schetuchet[schetuchet_kod]', '101.34');
     $I->fillField('Schetuchet[schetuchet_name]', 'Имя счета');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(1);
     $I->see('Счет учета = 101.34 уже существует');
     $I->click(['id' => 'backbutton']);
     $I->wait(2);
     $I->seeElement(['id' => 'schetuchetgrid_gw']);
 }
Beispiel #11
0
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('see home pag with menu and carousel');
$I->amOnPage('/');
$I->seeLink('Home');
$I->seeLink('Blog');
$I->seeLink('Projekty');
$I->seeLink('Fotografie');
$I->seeElement('div.carousel-inner');
Beispiel #12
0
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that frontpage works');
$I->amOnPage('/');
$I->seeInTitle('Free The Geek.fm - The podcast about the business of freelancing as a software developer, writer, content producer, and all round PHP lover.');
// Test the "about" section
$I->see("What's It About?");
$I->see("It's a fireside chat on the ins and outs of being a freelance writer, screencaster, teacher, and software developer. Looking at what it’s like to do it, warts and all, as well as how to get started, what to expect, the good, the bad, and the ugly. When we’re not talking that, we’re talking tech, code, apps, development, and of course PHP.");
// Test the subscribe buttons
$I->seeLink("Subscribe via RSS", "/rss.xml");
$I->seeLink("Subscribe on iTunes!", "https://itunes.apple.com/de/podcast/free-geek.fm-matthew-setter/id1018923368?l=en&mt=2");
// Test the "contact" section
$I->see('Got Questions');
$I->see("If you want to get in touch with me you'll, find all the contact details you need below");
$I->see("settermjd (skype)");
$I->see("*****@*****.**");
$I->seeLink("Matthew Setter", "http://www.matthewsetter.com");
$I->seeLink("the Slim Framework", "http://slimframework.com");
// Test the links
$I->seeLink("Free The Geek.fm", "/");
$I->seeLink("About", "/#about");
$I->seeLink("Contact", "/#contact");
$I->seeLink("Episodes", "/episodes");
// Test that the episodes appear on the home page
$I->see("Episodes", "//h2[@class='section-heading']");
$I->see("13.07.2015 / Episode 1", "//h3/a");
 /**
  * @depends addCreateMaterialFromSelect2
  */
 public function addCreateMaterialFromGrids(AcceptanceTester $I)
 {
     $I->seeLink('Составить акт прихода материальнной ценности');
     $I->click(['link' => 'Составить акт прихода материальнной ценности']);
     $I->wait(2);
     $I->seeElement(['class' => 'material-form']);
     $I->chooseValueFromSelect2('Material[material_tip]', 'Материал');
     $I->chooseValueFromGrid('Material[id_matvid]', 'СТОЛ', 'matvidgrid_gw');
     $I->fillField('Material[material_name]', 'Кухонный стол');
     $I->fillField('Material[material_inv]', '1000002');
     $I->dontSeeElement('//input[@name="Material[material_number]" and @disabled]');
     $I->seeElement('//input[@name="Material[material_number]"]');
     $I->fillField('Material[material_number]', '5.000');
     $I->chooseValueFromGrid('Material[id_izmer]', 'шт', 'izmergrid_gw');
     $I->fillField('Material[material_price]', '15000');
     //  $I->executeJS('window.scrollTo(0,200);');
     $I->chooseValueFromGrid('Material[id_schetuchet]', '101.34, НОВЫЙ СЧЕТ', 'schetuchetgrid_gw', '//td[text()="НОВЫЙ СЧЕТ"]' . '/preceding-sibling::td[text()="101.34"]' . '/preceding-sibling::td/button[@title="Выбрать"]');
     $I->uncheckOption('Запись изменяема при импортировании из 1С');
     $I->chooseValueFromGrid('Mattraffic[id_mol]', 'ИВАНОВ ИВАН ИВАНОВИЧ, ТЕРАПЕВТ, ТЕРАПЕВТИЧЕСКОЕ, ПОЛИКЛИНИКА 1', 'employeegrid_gw', '//td[text()="ПОЛИКЛИНИКА 1"]' . '/preceding-sibling::td[text()="ТЕРАПЕВТИЧЕСКОЕ"]' . '/preceding-sibling::td[text()="ТЕРАПЕВТ"]' . '/preceding-sibling::td[text()="ИВАНОВ ИВАН ИВАНОВИЧ"]' . '/preceding-sibling::td[text()="1175"]' . '/preceding-sibling::td/button[@title="Выбрать"]');
     $I->see('Создать');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(2);
     $I->seeElement('//td[text()="ПОЛИКЛИНИКА 1"]' . '/preceding-sibling::td[text()="ТЕРАПЕВТ"]' . '/preceding-sibling::td[text()="ИВАНОВ ИВАН ИВАНОВИЧ"]' . '/preceding-sibling::td[text()="5.000"]' . '/preceding-sibling::td[text()="Приход"]' . '/preceding-sibling::td/button[@title="Удалить"]');
     $I->see('Движение материальной ценности');
     $I->seeElement(['id' => 'mattraffic_karta_grid_gw']);
     $I->see('Обновить');
     $I->click('//button[contains(text(), "Обновить")]');
     $I->wait(2);
     $I->seeElement(['id' => 'materialgrid_gw']);
     $I->seeElement('//td[text()="Нет"]' . '/preceding-sibling::td[text()="15000.00"]' . '/preceding-sibling::td[text()="шт"]' . '/preceding-sibling::td[text()="5.000"]' . '/preceding-sibling::td[text()="1000002"]' . '/preceding-sibling::td[text()="Кухонный стол"]' . '/preceding-sibling::td[text()="СТОЛ"]' . '/preceding-sibling::td[text()="Материал"]' . '/preceding-sibling::td/a[@title="Карта материальной ценности"]');
 }
Beispiel #14
0
<?php

/* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that home page works');
$I->amOnPage(Yii::$app->homeUrl);
$I->see('My Company');
$I->seeLink('Grid');
$I->click('Grid');
$I->see('Reservations');
Beispiel #15
0
 /**
  * @depends deleteOneEmployee
  */
 public function addCreateEmployeeWithoutBuild(AcceptanceTester $I)
 {
     $I->seeLink('Добавить специальность');
     $I->click(['link' => 'Добавить специальность']);
     $I->wait(2);
     $I->seeElement(['class' => 'employee-form']);
     $I->click('//select[@name="Employee[id_dolzh]"]/following-sibling::div/a[@class="btn btn-success"]');
     $I->wait(2);
     $I->seeElement(['id' => 'dolzhgrid_gw']);
     $I->click('//td[text()="НЕВРОЛОГ"]/preceding-sibling::td/button[@title="Выбрать"]');
     $I->wait(2);
     $I->seeElement(['class' => 'employee-form']);
     $I->click('//select[@name="Employee[id_podraz]"]/following-sibling::div/a[@class="btn btn-success"]');
     $I->wait(2);
     $I->seeElement(['id' => 'podrazgrid_gw']);
     $I->click('//td[text()="ОБЩЕПОЛИКЛИНИЧЕСКОЕ"]/preceding-sibling::td/button[@title="Выбрать"]');
     $I->wait(2);
     $I->seeElement(['class' => 'employee-form']);
     $I->see('Создать');
     $I->click('//button[contains(text(), "Создать")]');
     $I->wait(2);
     $I->seeElement(['id' => 'employeeauthusergrid_gw']);
     $I->seeElement('//td[text()="ПОЛИКЛИНИКА 3"]/preceding-sibling::td[text()="ОБЩЕПОЛИКЛИНИЧЕСКОЕ"]/preceding-sibling::td[text()="КАРДИОЛОГ"]/preceding-sibling::td/button[@title="Удалить"]/preceding-sibling::a[@title="Обновить"]');
     $I->seeElement('//td[text()="ОБЩЕПОЛИКЛИНИЧЕСКОЕ"]/preceding-sibling::td[text()="НЕВРОЛОГ"]/preceding-sibling::td/button[@title="Удалить"]/preceding-sibling::a[@title="Обновить"]');
 }
Beispiel #16
0
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('See calendar for 2016');
$I->amOnPage('/calendar.php?year=2016');
$I->seeLink('Записаться в лист ожидания', '/apply.php?tourID=310');
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('Check that a simply Termin-entry works');
$I->amOnPage('/termine/1');
$I->see('Ausschuss mit Terminen (2016-01-01 09:00:00)', 'h1');
$I->seeLink('Original-Seite im RIS', 'http://www.ris-muenchen.de/RII/RII/ris_sitzung_detail.jsp?risid=1');
$I->see('01.01.2016, 09:00', '#datum');
$I->see('Raum für einen Termin', '#ort');
$I->see('Ausschuss mit Terminen', '#gremium');
$I->seeLink('Voriger Termin', '/termine/3');
$I->seeLink('Nächster Termin', '/termine/2');
Beispiel #18
0
<?php

//* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that home page works');
$I->amOnPage(Yii::$app->homeUrl);
$I->see('My Company');
$I->seeLink('About');
$I->click('About');
$I->see('This is the About page.');
$I->amOnPage('/add-new-recipe');
$I->see('Tilføj ny opskrift til databasen', 'h2');
/*
 * Checking the basic information inputs exists
 */
$I->seeElement('#name');
$I->seeElement('#storage');
$I->seeElement('#guide');
/*
 * Checking the different types of recipes exists
 */
$I->seeElement('html/body/div[5]/form/div[1]/select/option[1]');
$I->seeElement('html/body/div[5]/form/div[1]/select/option[2]');
/*
 * Checking the tables exists
 */
$I->seeElement('table');
$I->seeElement('#plantTable');
$I->seeElement('#ingredientTable');
/*
 * Checking submit btn exists
 */
$I->seeElement('html/body/div[5]/form/div[3]/input');
/*
 * Checking the links exists
 */
$I->seeLink('Forside');
$I->seeLink('Tilføj ny opskrift');
$I->seeLink('Tilføj ny plante');
$I->seeLink('Tilføj ny ingridients');
$I->seeLink('Om');
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('Check that an Antrag with a Vorgang has the correct "Verwandte Seiten"');
$I->amOnPage('/antraege/2');
$I->see('Antrag mit verwandten Seiten');
$I->seeLink('Das Dokument zum Antrag mit verwandten Seiten', '/dokumente/2');
$I->see('Verwandte Seiten');
$I->seeLink('Ein verwandter Antrag', '/antraege/3');
$I->dontSeeLink('Ein verwandtes Dokument', '/dokumente/1');
//
$I->dontSeeLink('Antrag mit verwandten Seiten', '/antraege/2');
$I->dontSee('Das Dokument zum Antrag mit verwandten Seiten', '#verwandte_seiten');
Beispiel #21
0
<?php

use yii\helpers\Url;
/* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo('vérifier que la page cms/web-pages/index fonctionne bien');
$pageUrl = Url::to(['/cms/web-pages/index']);
$wait = 1;
// secondes
$I->checkAccessFiltersAndLog($pageUrl, '*****@*****.**', 'ew0oVQQkaCvCGwmIxK7a', 'Liste des pages');
$I->expect('le lien de création fonctionne');
$I->seeLink('Ajouter une page');
$I->click('Ajouter une page');
$I->see('Ajouter une page', 'h1');
$I->expect('le lien de mise à jour fonctionne');
$I->amOnPage(Url::to(['/cms/web-pages/index']));
$url = Url::to(['/cms/web-pages/update', 'id' => 1], true);
$I->seeElement(['css' => 'a[href="' . $url . '"]']);
$I->click(['css' => 'a[href="' . $url . '"]']);
$I->wait($wait);
$I->see('Modifier une page', 'h1');
$I->expect('le lien vers la fiche fonctionne');
$I->amOnPage(Url::to(['/cms/web-pages/index']));
$url = Url::to(['/cms/web-pages/view', 'id' => 1], true);
$I->seeElement(['css' => 'a[href="' . $url . '"]']);
$I->click(['css' => 'a[href="' . $url . '"]']);
$I->wait($wait);
$I->see('Fiche d\'une page', 'h1');
$I->expect('la suppression fonctionne');
$I->amOnPage(Url::to(['/cms/web-pages/index']));
$url = Url::to(['/cms/web-pages/delete', 'id' => 1], true);
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('Assign Biblioteca System rol to "ADMINISTRADOR BIBLIOTECA" user');
$I->login('admin', 'pepito.P0', 'Admin User');
$I->amOnPage('admin/roles/assign.php?contextid=1&lang=en');
$I->see('Assign roles in System');
// User "CENTRAL DE APUNTES" is added to the global role
$I->seeLink('Biblioteca');
$I->click('Biblioteca');
$I->fillField('addselect_searchtext', 'ADMINISTRADOR BIBLIOTECA');
$I->selectOption('addselect[]', 'ADMINISTRADOR BIBLIOTECA (admin_biblioteca@unmail.com)');
$I->click('add');
$I->amOnPage('admin/roles/assign.php?contextid=1&lang=en');
$I->seeLink('ADMINISTRADOR BIBLIOTECA');
Beispiel #23
0
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('see the Home page');
$I->amOnPage('/');
$I->see('My albums');
$I->seeInDatabase('album', array('artist' => 'Adele', 'title' => '21'));
$I->seeLink('Add new album');
$I->click('Add new album');
$I->see('Title');
$I->see('Artist');
$I->seeCurrentUrlEquals('/album/add');
$I->fillField('title', 'foo');
$I->fillField('artist', 'bar');
// enable repopulate and cleanup in codeception.yml to reset the db before each test
// enabld module Db in acceptance.suite.yml to use this feature
// click submit to add the new album
//$I->dontSee('foo');
//$I->click('submit');
//$I->see('foo');
<?php

/**
 * @link http://www.diemeisterei.de/
 * @copyright Copyright (c) 2015 diemeisterei GmbH, Stuttgart
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that responsive mobile layout works');
$I->resizeWindow(320, 568);
$I->amOnPage('/');
$I->makeScreenshot('mobile');
$I->click('button.navbar-toggle');
$I->wait(3);
$I->seeElement('li.active');
$I->seeLink('Login');
$I->makeScreenshot('mobile-open-menu');
Beispiel #25
0
<?php

use yii\helpers\Url;
/* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo('vérifier que la page cms/web-texts/index fonctionne bien');
$pageUrl = Url::to(['/cms/web-texts/index']);
$wait = 1;
// secondes
$I->checkAccessFiltersAndLog($pageUrl, '*****@*****.**', 'ew0oVQQkaCvCGwmIxK7a', 'Liste des textes');
$I->expect('le lien de création fonctionne');
$I->seeLink('Ajouter un texte');
$I->click('Ajouter un texte');
$I->see('Ajouter un texte', 'h1');
$I->expect('le lien de mise à jour fonctionne');
$I->amOnPage(Url::to(['/cms/web-texts/index']));
$url = Url::to(['/cms/web-texts/update', 'id' => 2], true);
$I->seeElement(['css' => 'a[href="' . $url . '"]']);
$I->click(['css' => 'a[href="' . $url . '"]']);
$I->wait($wait);
$I->see('Modifier un texte', 'h1');
$I->expect('le lien vers la fiche fonctionne');
$I->amOnPage(Url::to(['/cms/web-texts/index']));
$url = Url::to(['/cms/web-texts/view', 'id' => 2], true);
$I->seeElement(['css' => 'a[href="' . $url . '"]']);
$I->click(['css' => 'a[href="' . $url . '"]']);
$I->wait($wait);
$I->see('Fiche d\'un texte', 'h1');
$I->expect('la suppression fonctionne');
$I->amOnPage(Url::to(['/cms/web-texts/index']));
$url = Url::to(['/cms/web-texts/delete', 'id' => 2], true);
<?php

/* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that article category default route works');
$I->amOnPage(Yii::$app->homeUrl . 'article-category/default/index');
$I->see('Article Category');
$I->wantTo('ensure that article category link works');
$I->seeLink('Article Category');
$I->click('Article Category');
$I->amOnPage(Yii::$app->homeUrl . 'article-category/');
$I->see('Article Category');
Beispiel #27
0
<?php

/* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that main page works');
$I->amOnPage(Yii::$app->homeUrl);
$I->see('Start page', 'title');
$I->seeLink('Statistics');
$I->click('Statistics');
$I->see('Statistics');
Beispiel #28
0
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('perform actions and see result');
$I->amOnPage('/');
$I->see('Richard Nwankwo');
$I->see('Software Engineer');
$I->see('Philadelphia, PA');
$I->seeLink('Home', '/');
$I->seeLink('About', '/about');
$I->seeLink('Contact', '/contact');
$I->seeLink('Projects', '/projects');
$I->click('About');
$I->see('About Me');
$I->see('Technologies/Frameworks I love using');
$I->click('Projects');
$I->see('Projects');
$I->click('Contact');
$I->see('Contact Me');
$I->submitForm('#contactForm', ['name' => 'Richard Nwankwo', 'email' => '*****@*****.**', 'message' => 'This is a test']);
$I->see('Message Sent!');
Beispiel #29
0
<?php

$I = new AcceptanceTester($scenario);
$i = rand(1, 1000);
$I->wantTo('Add Website');
$I->amOnPage('/login');
$I->fillField('email', '*****@*****.**');
$I->fillField("password", "123456");
$I->click(['class' => 'btn-raised']);
$I->seeLink('Logout', '/logout');
$I->click('Websites');
$I->seeInCurrentUrl('/websites');
$I->click(['class' => 'btn-primary']);
$I->see('Basic Details');
$I->selectOption('id_domain', '101');
//Need to change Value every time before run
$I->selectOption('id_template', '101');
$I->fillField('campaign_id', '595');
$I->fillField('campaign_link', 'http://www.equinoxdna.com/o23new/direct_billing.php');
$I->fillField('website_title', 'Equinox DaynNight Serum Trial');
$I->fillField('company_id', '1');
$I->fillField('company_name', 'Equinox DaynNight Serum Trial');
$I->fillField('product_id', '4');
$I->fillField('product_name', 'Equinox DaynNight Serum Trial');
$I->fillField('email', 'abc' . $i . '@abc.com');
$I->fillField('cancel_order_email', 'abc' . $i . '@abc.com');
$I->selectOption('id_address', 'QA Address');
$I->selectOption('id_prices', 'QA Price');
$I->checkOption(['class' => 'show-hide-details', 'name' => 'is_us']);
$I->fillField('us_company_name', 'QA US' . $i . '');
$I->fillField('us_phone_number', '12345678901');
<?php

$I = new AcceptanceTester($scenario);
$I->wantTo('see list of products');
$I->amOnPage('/product');
$I->see('Product List');
$I->see('P-006');
$I->see('Nulla officiis sed facere.');
$I->seeLink('Add New Product', 'product/create');
$I->seeLink('edit');
$I->seeLink('delete');