Exemple #1
0
 public function tryToTestOrderListBackend(WebGuy $I, $scenario)
 {
     $I->wantToTest('order backend');
     $I = new UserSteps($scenario);
     $I->loginAsAdminAndGoToThePanel(CommonPage::TEST_USER_NAME, CommonPage::TEST_PASSWORD);
     $I->am('administrator');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->see('Заказы', 'h1');
     $I->see('управление', 'small');
     $I->expectTo('see sidebar menu');
     $I->seeLink('Все заказы');
     $I->seeLink('Добавить заказ');
     $I->seeLink('Статусы заказов');
     $I->seeLink('Добавить статус');
     $I->see('Элементы 1—3 из 3.', '.summary');
     $I->see('Добавить', '.btn-success');
     $I->see('Удалить', '#delete-order');
     $I->see('№', '.sort-link');
     $I->see('Создан', '.sort-link');
     $I->see('Клиент', '.sort-link');
     $I->see('Сумма', '.sort-link');
     $I->see('Статус', '.sort-link');
     $I->see('Оплата', '.sort-link');
     $I->see('Оплачено', '.sort-link');
     $I->see('Доставка', '.sort-link');
     $I->see('Менеджер', '.sort-link');
     $I->seeLink('Платежеспособный Клиент Бабосович');
     $I->seeLink('Багин Тестер Петрович');
     $I->see('13 320,00 руб.', 'td');
     $I->see('38 600,00 руб.', 'td');
     $I->see('Наличными', 'td');
     $I->see('Курьером');
     $I->see('Самовывоз');
     $I->amGoingTo('test order table filter');
     $I->seeElement('input', ['name' => 'Order[id]']);
     $I->seeElement('input', ['name' => 'Order[name]']);
     $I->seeElement('input', ['name' => 'Order[total_price]']);
     $I->seeElement('select', ['name' => 'Order[status_id]']);
     $I->seeElement('select', ['name' => 'Order[payment_method_id]']);
     $I->seeElement('select', ['name' => 'Order[paid]']);
     $I->seeElement('select', ['name' => 'Order[delivery_id]']);
     $I->seeElement('select', ['name' => 'Order[manager_id]']);
     $I->fillField('Order[id]', 3);
     $I->pressKey('#Order_id', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Платежеспособный Клиент Бабосович');
     $I->dontSeeLink('Багин Тестер Петрович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->fillField('Order[name]', 'баг');
     $I->pressKey('#Order_name', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Багин Тестер Петрович');
     $I->dontSeeLink('Платежеспособный Клиент Бабосович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->fillField('Order[total_price]', 13320);
     $I->pressKey('#Order_total_price', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Платежеспособный Клиент Бабосович');
     $I->dontSeeLink('Багин Тестер Петрович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->selectOption('Order[status_id]', 'Новый');
     $I->wait(1);
     $I->seeLink('Багин Тестер Петрович');
     $I->dontSeeLink('Платежеспособный Клиент Бабосович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->selectOption('Order[payment_method_id]', 'Робокасса');
     $I->wait(1);
     $I->see('Нет результатов.');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->selectOption('Order[paid]', 'Не оплачен');
     $I->wait(1);
     $I->seeLink('Багин Тестер Петрович');
     $I->dontSeeLink('Платежеспособный Клиент Бабосович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->selectOption('Order[delivery_id]', 'Курьером');
     $I->wait(1);
     $I->seeLink('Платежеспособный Клиент Бабосович');
     $I->dontSeeLink('Багин Тестер Петрович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
     $I->selectOption('Order[manager_id]', 'Багин Тестер Петрович');
     $I->wait(1);
     $I->seeLink('Платежеспособный Клиент Бабосович');
     $I->dontSeeLink('Багин Тестер Петрович');
     $I->amOnPage(self::BACKEND_ORDER_PATH);
 }
Exemple #2
0
 public function tryToTestBackendProductView(WebGuy $I, $scenario)
 {
     $I->wantToTest('product detail view page');
     $I = new UserSteps($scenario);
     $I->loginAsAdminAndGoToThePanel(CommonPage::TEST_USER_NAME, CommonPage::TEST_PASSWORD);
     $I->am('administrator');
     $I->amOnPage(self::BACKEND_PRODUCT_PATH . '/view/1');
     $I->see('Просмотр товара', 'h1');
     $I->see('«Dell U2715H»', 'small');
     $I->expectTo('see sidebar menu');
     $I->seeLink('Все товары');
     $I->seeLink('Добавить товар');
     $I->seeLink('Изменить товар');
     $I->seeLink('Просмотреть товар');
     $I->seeLink('Удалить товар');
     $I->expectTo('see product details table');
     $I->seeElement('table', ['class' => 'detail-view table table-striped table-condensed']);
     $I->see('Тип', 'th');
     $I->see('Мониторы', 'td');
     $I->see('Название', 'th');
     $I->see('Dell U2715H', 'td');
     $I->see('Цена', 'th');
     $I->see('38000.000', 'td');
     $I->see('Статус', 'th');
     $I->see('Доступен', 'td');
 }
Exemple #3
0
 public function tryToTestPaymentBackend(WebGuy $I, $scenario)
 {
     $I = new UserSteps($scenario);
     $I->loginAsAdminAndGoToThePanel(CommonPage::TEST_USER_NAME, CommonPage::TEST_PASSWORD);
     $I->am('administrator');
     $I->wantToTest('store payment backend');
     $I->amOnPage(self::BACKEND_PAYMENT_PATH);
     $I->expectTo('see sidebar menu');
     $I->seeLink('Управление способами оплаты');
     $I->seeLink('Добавить способ оплаты');
     $I->see('Способы оплаты', 'h1');
     $I->see('управление', 'small');
     $I->expectTo('see payment table');
     $I->see('Элементы 1—2 из 2.', '.summary');
     $I->seeElement('table', ['class' => 'items table table-condensed']);
     $I->see('Название', '.sort-link');
     $I->see('Платежная система', '.sort-link');
     $I->see('Статус', '.sort-link');
     $I->seeLink('Наличными');
     $I->seeLink('Робокасса');
     $I->seeInPageSource('<a class="update btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/payment/payment/update/1" data-original-title="Редактировать"');
     $I->seeInPageSource('<a class="delete btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/payment/payment/delete/1" data-original-title="Удалить"');
     $I->amGoingTo('test payment filter');
     $I->seeElement('input', ['name' => 'Payment[name]']);
     $I->seeElement('input', ['name' => 'Payment[module]']);
     $I->seeElement('select', ['name' => 'Payment[status]']);
     $I->fillField('Payment[name]', 'Наличными');
     $I->pressKey('#Payment_name', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Наличными');
     $I->dontSeeLink('Робокасса');
     $I->amOnPage(self::BACKEND_PAYMENT_PATH);
     $I->fillField('Payment[module]', 'robokassa');
     $I->pressKey('#Payment_module', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Робокасса');
     $I->dontSeeLink('Наличными');
     $I->amOnPage(self::BACKEND_PAYMENT_PATH);
     $I->selectOption('Payment[status]', 'Активен');
     $I->wait(1);
     $I->seeLink('Наличными');
     $I->dontSeeLink('Робокасса');
     $I->amGoingTo('add a new payment');
     $I->amOnPage(self::BACKEND_PAYMENT_PATH . '/create');
     $I->see('Способ оплаты', 'h1');
     $I->see('добавление', 'small');
     $I->seeLink('Управление способами оплаты');
     $I->seeLink('Добавить способ оплаты');
     $I->seeOptionIsSelected('Payment[status]', 'Активен');
     $I->fillField('Payment[name]', 'Тестовый');
     $I->selectOption('Payment[module]', 'Обработка вручную');
     $I->click('Добавить способ оплаты и закрыть');
     $I->wait(1);
     $I->seeInCurrentUrl(self::BACKEND_PAYMENT_PATH);
     $I->see('Запись добавлена!', '.alert-success');
     $I->seeLink('Тестовый');
     $I->amGoingTo('delete payment');
     $I->amOnPage(self::BACKEND_PAYMENT_PATH . '/delete/3');
     $I->expectTo('see an error message');
     $I->see('Неверный запрос. Пожалуйста, больше не повторяйте такие запросы', '.alert-danger');
     $I->amOnPage(self::BACKEND_PAYMENT_PATH);
     $I->expectTo('delete attr via ajax request');
     $I->executeJS('
         $.post(
             document.location.href + "/delete/3", 
             {"YUPE_TOKEN":yupeToken}
         );
     ');
     $I->wait(1);
     $I->reloadPage();
     $I->dontSeeLink('Тестовый');
 }
Exemple #4
0
 public function tryToTestCouponBackend(WebGuy $I, $scenario)
 {
     $I = new UserSteps($scenario);
     $I->loginAsAdminAndGoToThePanel(CommonPage::TEST_USER_NAME, CommonPage::TEST_PASSWORD);
     $I->am('administrator');
     $I->amOnPage(self::BACKEND_COUPON_PATH);
     $I->expectTo('see sidebar menu');
     $I->seeLink('Управление купонами');
     $I->seeLink('Добавить купон');
     $I->see('Купоны', 'h1');
     $I->expectTo('see coupon table');
     $I->see('Название', '.sort-link');
     $I->see('Код', '.sort-link');
     $I->see('Дата начала', '.sort-link');
     $I->see('Дата конца', '.sort-link');
     $I->see('Статус', '.sort-link');
     $I->see('Заказы', 'th');
     $I->expectTo('see buttons column');
     $I->seeInPageSource('<a class="view btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/coupon/coupon/view/1" data-original-title="Просмотреть"');
     $I->seeInPageSource('<a class="update btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/coupon/coupon/update/1" data-original-title="Редактировать"');
     $I->seeInPageSource('<a class="delete btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/coupon/coupon/delete/1" data-original-title="Удалить"');
     $I->expectTo('see coupon list');
     $I->seeLink('Купон1');
     $I->seeLink('Купон2');
     $I->seeLink('Купон3');
     $I->seeLink('Купон4');
     $I->see('CPN1');
     $I->see('CPN2');
     $I->see('CPN3');
     $I->see('CPN4');
     $I->amGoingTo('test coupon filter');
     $I->seeElement('input', ['name' => 'Coupon[name]']);
     $I->seeElement('input', ['name' => 'Coupon[code]']);
     $I->seeElement('input', ['name' => 'Coupon[start_time]']);
     $I->seeElement('input', ['name' => 'Coupon[end_time]']);
     $I->seeElement('select', ['name' => 'Coupon[status]']);
     $I->fillField('Coupon[name]', 'Купон1');
     $I->pressKey('#Coupon_name', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Купон1');
     $I->dontSeeLink('Купон2');
     $I->dontSeeLink('Купон3');
     $I->dontSeeLink('Купон4');
     $I->amOnPage(self::BACKEND_COUPON_PATH);
     $I->fillField('Coupon[code]', 'CPN2');
     $I->pressKey('#Coupon_code', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Купон2');
     $I->dontSeeLink('Купон1');
     $I->dontSeeLink('Купон3');
     $I->dontSeeLink('Купон4');
     $I->amOnPage(self::BACKEND_COUPON_PATH);
     $I->fillField('Coupon[end_time]', '2016-07-01');
     $I->pressKey('#Coupon_end_time', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Купон3');
     $I->dontSeeLink('Купон2');
     $I->dontSeeLink('Купон1');
     $I->dontSeeLink('Купон4');
     $I->amOnPage(self::BACKEND_COUPON_PATH);
     $I->selectOption('Coupon[status]', 'Неактивен');
     $I->wait(1);
     $I->seeLink('Купон4');
     $I->dontSeeLink('Купон3');
     $I->dontSeeLink('Купон2');
     $I->dontSeeLink('Купон1');
     $I->amGoingTo('add a new coupon');
     $I->amOnPage(self::BACKEND_COUPON_PATH . '/create');
     $I->see('Купоны', 'h1');
     $I->see('добавление', 'small');
     $I->seeLink('Управление купонами');
     $I->seeLink('Добавить купон');
     $I->seeOptionIsSelected('Coupon[type]', 'Сумма');
     $I->seeOptionIsSelected('Coupon[status]', 'Неактивен');
     $I->seeOptionIsSelected('Coupon[free_shipping]', 'нет');
     $I->seeOptionIsSelected('Coupon[registered_user]', 'нет');
     $I->expectTo('see validation errors');
     $I->click('Добавить купон и закрыть');
     $I->see('Необходимо заполнить поле «Название»', '.error');
     $I->see('Необходимо заполнить поле «Код»', '.error');
     $I->fillField('Coupon[name]', 'Тестовый купон');
     $I->amGoingTo('add coupon with existing code');
     $I->expectTo('see error');
     $I->fillField('Coupon[code]', 'CPN1');
     $I->click('Добавить купон и закрыть');
     $I->see('Код "CPN1" уже занят.', '.error');
     $I->fillField('Coupon[code]', 'test');
     $I->click('Добавить купон и закрыть');
     $I->wait(1);
     $I->seeInCurrentUrl(self::BACKEND_COUPON_PATH);
     $I->see('Запись добавлена!', '.alert-success');
     $I->seeLink('Тестовый купон');
     $I->amGoingTo('view coupon data');
     $I->amOnPage(self::BACKEND_COUPON_PATH . '/view/5');
     $I->see('Просмотр купона', 'h1');
     $I->see('«test»', 'small');
     $I->expectTo('see sidebar menu');
     $I->seeLink('Управление купонами');
     $I->seeLink('Добавить купон');
     $I->seeLink('Редактировать купон');
     $I->seeLink('Просмотреть купон');
     $I->seeLink('Удалить купон');
     $I->seeElement('table', ['class' => 'detail-view table table-striped table-condensed']);
     $I->see('ID', 'th');
     $I->see('5', 'td');
     $I->see('Название', 'th');
     $I->see('Тестовый купон', 'td');
     $I->see('Код', 'th');
     $I->see('test', 'td');
     $I->see('Тип', 'th');
     $I->see('Сумма', 'td');
     $I->amGoingTo('delete coupon');
     $I->amOnPage(self::BACKEND_COUPON_PATH . '/delete/5');
     $I->expectTo('see an error message');
     $I->see('Неверный запрос. Пожалуйста, больше не повторяйте такие запросы', '.alert-danger');
     $I->amOnPage(self::BACKEND_COUPON_PATH);
     $I->expectTo('delete attr via ajax request');
     $I->executeJS('
         $.post(
             document.location.href + "/delete/5", 
             {"YUPE_TOKEN":yupeToken}
         );
     ');
     $I->wait(1);
     $I->reloadPage();
     $I->seeLink('Купон1');
     $I->seeLink('Купон2');
     $I->seeLink('Купон3');
     $I->seeLink('Купон4');
     $I->dontSeeLink('Тестовый купон');
 }
Exemple #5
0
 public function tryToTestDeliveryBackend(WebGuy $I, $scenario)
 {
     $I = new UserSteps($scenario);
     $I->loginAsAdminAndGoToThePanel(CommonPage::TEST_USER_NAME, CommonPage::TEST_PASSWORD);
     $I->am('administrator');
     $I->wantToTest('store delivery backend');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH);
     $I->expectTo('see sidebar menu');
     $I->seeLink('Управление способами доставки');
     $I->seeLink('Добавить способ доставки');
     $I->see('Способы доставки', 'h1');
     $I->see('управление', 'small');
     $I->expectTo('see delivery table');
     $I->see('Элементы 1—4 из 4.', '.summary');
     $I->seeElement('table', ['class' => 'items table table-condensed']);
     $I->see('Название', '.sort-link');
     $I->see('Стоимость', '.sort-link');
     $I->see('Бесплатна от', '.sort-link');
     $I->see('Доступна от', '.sort-link');
     $I->see('Статус', '.sort-link');
     $I->seeLink('Самовывоз');
     $I->seeLink('Курьером');
     $I->seeLink('Транспортная компания');
     $I->seeLink('Пункт выдачи');
     $I->seeInPageSource('<a class="update btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/delivery/delivery/update/1" data-original-title="Редактировать"');
     $I->seeInPageSource('<a class="delete btn btn-sm btn-default" title="" data-toggle="tooltip" href="/index-test.php/backend/delivery/delivery/delete/1" data-original-title="Удалить"');
     $I->amGoingTo('test delivery filter');
     $I->seeElement('input', ['name' => 'Delivery[name]']);
     $I->seeElement('input', ['name' => 'Delivery[price]']);
     $I->seeElement('input', ['name' => 'Delivery[free_from]']);
     $I->seeElement('input', ['name' => 'Delivery[available_from]']);
     $I->seeElement('select', ['name' => 'Delivery[status]']);
     $I->fillField('Delivery[name]', 'Самовывоз');
     $I->pressKey('#Delivery_name', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Самовывоз');
     $I->dontSeeLink('Курьером');
     $I->dontSeeLink('Транспортная компания');
     $I->dontSeeLink('Пункт выдачи');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH);
     $I->fillField('Delivery[price]', 700);
     $I->pressKey('#Delivery_price', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Транспортная компания');
     $I->dontSeeLink('Курьером');
     $I->dontSeeLink('Самовывоз');
     $I->dontSeeLink('Пункт выдачи');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH);
     $I->fillField('Delivery[free_from]', 30000);
     $I->pressKey('#Delivery_free_from', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Курьером');
     $I->dontSeeLink('Самовывоз');
     $I->dontSeeLink('Транспортная компания');
     $I->dontSeeLink('Пункт выдачи');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH);
     $I->fillField('Delivery[available_from]', 10000);
     $I->pressKey('#Delivery_available_from', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Транспортная компания');
     $I->dontSeeLink('Курьером');
     $I->dontSeeLink('Самовывоз');
     $I->dontSeeLink('Пункт выдачи');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH);
     $I->selectOption('Delivery[status]', 'Неактивен');
     $I->wait(1);
     $I->seeLink('Пункт выдачи');
     $I->dontSeeLink('Транспортная компания');
     $I->dontSeeLink('Курьером');
     $I->dontSeeLink('Самовывоз');
     $I->amGoingTo('add a new delivery');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH . '/create');
     $I->see('Способы доставки', 'h1');
     $I->see('добавление', 'small');
     $I->seeLink('Управление способами доставки');
     $I->seeLink('Добавить способ доставки');
     $I->seeOptionIsSelected('Delivery[status]', 'Активен');
     $I->seeInField('Delivery[price]', '0.00');
     $I->dontSeeCheckboxIsChecked('Delivery[separate_payment]');
     $I->fillField('Delivery[name]', 'Почта России');
     $I->fillField('Delivery[price]', 250);
     $I->click('Добавить доставку и закрыть');
     $I->wait(1);
     $I->seeInCurrentUrl(self::BACKEND_DELIVERY_PATH);
     $I->see('Запись добавлена!', '.alert-success');
     $I->seeLink('Почта России');
     $I->amGoingTo('update delivery');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH . '/update/5');
     $I->see('Редактирование способа доставки', 'h1');
     $I->see('«Почта России»', 'small');
     $I->expectTo('see sidebar menu');
     $I->seeLink('Управление способами доставки');
     $I->seeLink('Добавить способ доставки');
     $I->seeLink('Редактировать способ доставки');
     $I->seeLink('Удалить способ доставки');
     $I->fillField('Delivery[price]', 123);
     $I->click('Сохранить доставку и закрыть');
     $I->wait(1);
     $I->seeInCurrentUrl(self::BACKEND_DELIVERY_PATH);
     $I->see('Запись изменена!', '.alert-success');
     $I->see('123.00', 'td');
     $I->amGoingTo('test delete delivery');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH . '/delete/5');
     $I->expectTo('see an error message');
     $I->see('Неверный запрос. Пожалуйста, больше не повторяйте такие запросы', '.alert-danger');
     $I->amOnPage(self::BACKEND_DELIVERY_PATH);
     $I->expectTo('delete attr via ajax request');
     $I->executeJS('
         $.post(
             document.location.href + "/delete/5", 
             {"YUPE_TOKEN":yupeToken}
         );
     ');
     $I->wait(1);
     $I->reloadPage();
     $I->dontSeeLink('Почта России');
 }
Exemple #6
0
 public function tryToTestProductLinkTypes(WebGuy $I, $scenario)
 {
     $I = new UserSteps($scenario);
     $I->loginAsAdminAndGoToThePanel(CommonPage::TEST_USER_NAME, CommonPage::TEST_PASSWORD);
     $I->am('administrator');
     $I->amGoingTo('test backend product link types list');
     $I->amOnPage(self::BACKEND_LINK_PATH);
     $I->see('Типы связей', 'h1');
     $I->see('Добавить', '.btn-default');
     $I->seeLink('Управление типами связей');
     $I->see('Код', '.sort-link');
     $I->see('Название', '.sort-link');
     $I->seeInPageSource('<a class="delete" title="" data-toggle="tooltip" href="/index-test.php/backend/store/link/typeDelete/1" data-original-title="Удалить"');
     $I->amGoingTo('test grid filter');
     $I->fillField('//*[@id="question-grid"]/table/thead/tr[2]/td[2]/div/*[@id="ProductLinkType_code"]', 'similar');
     $I->pressKey('//*[@id="question-grid"]/table/thead/tr[2]/td[2]/div/*[@id="ProductLinkType_code"]', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('Похожие товары');
     $I->dontSeeLink('С этим товаром покупают');
     $I->fillField('//*[@id="question-grid"]/table/thead/tr[2]/td[2]/div/*[@id="ProductLinkType_code"]', '');
     $I->wait(1);
     $I->fillField('//*[@id="question-grid"]/table/thead/tr[2]/td[3]/div/*[@id="ProductLinkType_title"]', 'этим');
     $I->pressKey('//*[@id="question-grid"]/table/thead/tr[2]/td[3]/div/*[@id="ProductLinkType_title"]', WebDriverKeys::ENTER);
     $I->wait(1);
     $I->seeLink('С этим товаром покупают');
     $I->dontSeeLink('Похожие товары');
     $I->fillField('//*[@id="question-grid"]/table/thead/tr[2]/td[3]/div/*[@id="ProductLinkType_title"]', '');
     $I->wait(1);
     $I->amGoingTo('add a new link');
     $I->click('//*[@id="content"]/p/a[@class="btn btn-default btn-sm dropdown-toggle"]');
     $I->seeElement('//*[@id="question-form"]/div[2]/div[1]/div/*[@id="ProductLinkType_code"]');
     $I->seeElement('//*[@id="question-form"]/div[2]/div[2]/div/*[@id="ProductLinkType_title"]');
     $I->see('Добавить', '.btn-primary');
     $I->expectTo('see validation errors');
     $I->click('//*[@id="question-form"]/div[3]/div/*[@class="btn btn-primary"]');
     $I->see('Необходимо заполнить поле «Код»', '.error');
     $I->see('Необходимо заполнить поле «Название»', '.error');
     $I->fillField('//*[@id="question-form"]/div[2]/div[1]/div/*[@id="ProductLinkType_code"]', 'test');
     $I->fillField('//*[@id="question-form"]/div[2]/div[2]/div/*[@id="ProductLinkType_title"]', 'Тестовая связь');
     $I->click('//*[@id="question-form"]/div[3]/div/*[@class="btn btn-primary"]');
     $I->wait(1);
     $I->see('Запись добавлена!', '.alert-success');
     $I->seeLink('Тестовая связь');
     $I->dontSeeElement('//*[@id="question-form"]/div[2]/div[1]/div/*[@id="ProductLinkType_code"]');
     $I->dontSeeElement('//*[@id="question-form"]/div[2]/div[2]/div/*[@id="ProductLinkType_title"]');
     $I->amGoingTo('test deleting link');
     $I->amOnPage(self::BACKEND_LINK_DELETE_PATH);
     $I->expectTo('see an error message');
     $I->see('Неверный запрос. Пожалуйста, больше не повторяйте такие запросы!', '.alert-danger');
     $I->amOnPage(self::BACKEND_LINK_PATH);
     $I->expectTo('delete attr via ajax request');
     $I->executeJS('
         var url = document.location.href;
         $.post(
             url.replace("typeIndex", "typeDelete") + "/3", 
             {"YUPE_TOKEN":yupeToken}
         );
     ');
     $I->wait(1);
     $I->reloadPage();
     $I->dontSeeLink('Тестовая связь');
 }