Как сгенерировать тестовый код с Playwright

Как сгенерировать тестовый код с Playwright

10 февраля 2023 г.

Привет,

Сегодня вы узнаете, как генерировать код для своих тестов.

Прежде всего, вам нужно запустить приложение, поэтому введите в свой терминал npm run dev , и ваше приложение будет запущено и запущено по адресу http://localhost:5173< /код>.

Теперь вам нужно запустить генератор кода Playwright. Для этого вам нужно открыть другую вкладку в своем терминале и ввести npx playwright codegen. Эта команда открывает новый браузер и Инспектора драматургов.

Теперь в браузере отображается пустая вкладка, а Инспектор драматургов находится на новой странице и готов слушать, что вы будете делать в браузере. Если вы зайдете в адресную строку браузера и наберете http://localhost:5173, вы заметите, что что-то изменилось в Инспекторе драматургов. Инспектор отметил изменение страницы и добавил этот шаг в тело теста.

Теперь вы можете нажать на один квадрат и смоделировать игру между двумя игроками, вы можете заметить, что инспектор записывает все эти шаги и создает для вас тело теста. Результат этих действий таков

test('test', async ({ page }) => {
  await page.goto('http://localhost:5173/');
  await page.locator('._Square_pba4r_1').first().click();
  await page.locator('button:nth-child(5)').click();
  await page.locator('button:nth-child(6)').click();
  await page.locator('button:nth-child(7)').click();
  await page.locator('button:nth-child(3)').click();
  await page.locator('button:nth-child(9)').click();
  await page.locator('button:nth-child(2)').click();
});

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

Теперь пришло время скопировать и вставить код в наш тестовый файл и улучшить его содержимое.

Начнем с изменения названия теста с test на должен выиграть игрок "X" и изменения значения перехода с http://localhost:5173/ на /, потому что наш базовый корень соответствует домашней странице.

Тогда рефакторинг первого клика, вероятно, является хорошим рефакторингом для улучшения теста, поэтому вам нужно изменить строку с await page.locator('._Square_pba4r_1').first().click(); на await page.locator("button:nth-child(1)").click(); и, наконец, добавьте утверждение. В этом случае, если название теста должен выиграть игрок "X", лучшим утверждением будет что-то вроде этого

const winnerParagraph = await page.getByText(/winner/i);
await expect(winnerParagraph).toContainText("X");

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

test('should win the player "X"', async ({ page }) => {
    await page.goto("/");
    await page.locator("button:nth-child(1)").click();
    await page.locator("button:nth-child(5)").click();
    await page.locator("button:nth-child(6)").click();
    await page.locator("button:nth-child(7)").click();
    await page.locator("button:nth-child(3)").click();
    await page.locator("button:nth-child(9)").click();
    await page.locator("button:nth-child(2)").click();

    const winnerParagraph = await page.getByText(/winner/i);
    await expect(winnerParagraph).toContainText("X");
  });

Теперь вы можете запустить тест и проверить результат, который должен быть зеленым.

Хорошо, я думаю, что это все из-за генерации кода.

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

Вот и все, народ.

До скорой встречи 👋

p.s. вы можете найти результат этой статьи здесь


Оригинал