From 9c2980c47b8ac0a708574ab406ef4ce64ef91b06 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 19 Jun 2024 12:57:22 +0200 Subject: [PATCH] review feedback --- docs/src/test-parameterize-js.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/src/test-parameterize-js.md b/docs/src/test-parameterize-js.md index a03cee23e1..8be8009549 100644 --- a/docs/src/test-parameterize-js.md +++ b/docs/src/test-parameterize-js.md @@ -16,7 +16,7 @@ You can either parameterize tests on a test level or on a project level. ].forEach(({ name, expected }) => { // You can also do it with test.describe() or with multiple tests as long the test name is unique. test(`testing with ${name}`, async ({ page }) => { - await page.goto(`/greet?name=${name}`); + await page.goto(`https://example.com/greet?name=${name}`); await expect(page.getByRole('heading')).toHaveText(expected); }); }); @@ -41,12 +41,31 @@ test.afterEach(async ({ page }) => { { name: 'Charlie', expected: 'Hello, Charlie!' }, ].forEach(({ name, expected }) => { test(`testing with ${name}`, async ({ page }) => { - await page.goto(`/greet?name=${name}`); + await page.goto(`https://example.com/greet?name=${name}`); await expect(page.getByRole('heading')).toHaveText(expected); }); }); ``` +If you want to have hooks for each test, you can put them inside a `describe()` - so they are executed for each iteration / each invidual test: + +```js title="example.spec.ts" +[ + { name: 'Alice', expected: 'Hello, Alice!' }, + { name: 'Bob', expected: 'Hello, Bob!' }, + { name: 'Charlie', expected: 'Hello, Charlie!' }, +].forEach(({ name, expected }) => { + test.describe(() => { + test.beforeEach(async ({ page }) => { + await page.goto(`https://example.com/greet?name=${name}`); + }); + test(`testing with ${expected}`, async ({ page }) => { + await expect(page.getByRole('heading')).toHaveText(expected); + }); + }); +}); +``` + ## Parameterized Projects Playwright Test supports running multiple test projects at the same time. In the following example, we'll run two projects with different options.