линия

Главная

понедельник, 7 февраля 2022 г.

Laravel - Dusk регрессионное тестирование оформление заказа

 Тестирование приложения неотъемлемая часть  процесса правильной разработки программного продукта. Сегодня расскажу как легко можно  написать тест оформления заказа. Проект, на котором нужно было написать тест, довольной сложный: фронт на Vue , бек на Laravel . 

Юнит тест для оформления заказа можно  было выполнить на уровне контроллеров, но тогда  ошибки возникающие на фронте не отловишь. Поэтому было решено использовать так называемый регрессионное тестирование.

Для этой задачи прекрасно подойдет Laravel Dusk . Устанавливает сие дело очень просто. Переходите по ссылке для установки:  https://laravel.su/docs/8.x/dusk 




Для создания класса тестирования пишем:

php artisan dusk:make CheckoutTest



Теперь давайте подумаем, как происходит оформление заказа.  Очевидно, нужно открыть товар, положить в корзину, перейти на страницу оформления заказа. Заполнить форму и получить какой то ответ, лучше конечно, если ответ об успешном заказе.

 



<?php

namespace Tests\Browser;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class CheckoutTest extends DuskTestCase {

	/**
	 * A Dusk test example.
	 *
	 * @return void
	 */
	public function testNotRegistredUser() {
		$this->browse(function (Browser $browser) {
			$browser
				//Открываем товар!
				->visit('/product/praim-dent-prime-dent-hybrid-composite-visible-light-cure-gibridnyi-svetovoi-kompozit-nabor-7-spr')
				->screenshot('checkout-1')
				//ждем 5 секунд. Чтоб данные обновились
				->pause(5000)
				//Кликаем по кнопке чтоб положить в корзину
				->click('.bhButton')
				->pause(5000)
				->screenshot('checkout-2')
				//Переходим на страницу оплаты
				->visit('/account/shopping-cart?ordering=true')
				->pause(5000)
				->screenshot('checkout-3')
				//Нахимаем на оформить заказ, вызывая ошибку валидации.Нужно ввести данные
				->press('Оформить заказ')
				->pause(2000)
				->screenshot('checkout-4')
				->pause(1000)
				//Ввводим данные в формы
				->type('#input-315', 'Testov')
				->type('#input-318', '89170000001')
				->type('#input-321', 'test@mail.net')
				//Нахимаем на оформить заказ, вызывая ошибку валидации.Нужно ввести  адрес
				->press('Оформить заказ')
				->screenshot('checkout-5')

				//Город .Во всплывающем окне выбираем из списка первый элемент
				->type('#input-288', 'Казань')->pause(5000)->click('#list-288>div:first-child')

				//Улица
				->type('#input-293', 'на')->pause(4000)->click('#list-293>div:first-child')

				//Номер дома
				->type('#input-298', '11')

				//ИНН
				->type('#input-336', '123')->pause(4000)->click('#list-336>div:first-child')
				->pause(1000)
				->press('Оформить заказ')
				->pause(4000)
				->screenshot('checkout-6')
				//Проверяем
				->assertSee('Ваш заказ принят!');

			/*
			 * Далее, возможно! нужно удалить тестовый заказ и  созданного юзера
			 */
		});
	}

}

Вот и весь код. 

Для запуска теста нужно набрать команду:

php artisan dusk


Разумеется, в данной коде есть кое какие недочеты. 

1. Это для кнопок нужно прописать  правильный атрибуты dusk (<button dusk="login-button">Login</button>

2. После оформления заказа нужно удалить тестовый заказ.      

1 комментарий: