Estoy aprendiendo Playwright y JavaScript al mismo tiempo, por lo que esta puede ser una pregunta elemental: me pregunto cómo la gente recomendaría compartir el estado, la variable customerId en este caso, entre pruebas.
Ejemplo:
test.describe.only('Generate a new customer', () => { let customerId let baseUrl = process.env.SHOP_URL test('Create new customer', async ({ request }) => { const response = await request.post(baseUrl + `/shopify/v5/customer`, {}) const responseBody = JSON.parse(await response.text()) expect(response.status()).toBe(200) customerId = responseBody.customerId //need to persist customerId to pass into following test }) test('Update customer details', async ({ request }) => { const response = await request.post(baseUrl + `/shopify/v5/customer/update`, {}) { data: { customerId: customerId, //customerId is undefined here name: "Fred" }, } ) expect(response.status()).toBe(200) }) el ID de customerId está claramente fuera del alcance en la segunda prueba. Probablemente los refactorice para usar una biblioteca como Axios eventualmente porque estoy usando las pruebas de Playwright para generar datos; en realidad, no estoy probando la API aquí. Mientras tanto, solo necesito que el ID de customerId se mantenga en las llamadas api posteriores.
Eso es antipatrón, las pruebas deben ser independientes, especialmente en el dramaturgo, donde las pruebas se ejecutan en paralelo de forma predeterminada:
https://playwright.dev/docs/test-parallel
Puede fusionar esas dos pruebas en una prueba.
Si todavía quiere ir de esa manera, supongo que puede usar accesorios o ganchos para que funcione, aquí hay ejemplos:
Para que su ejemplo funcione, debe ejecutar las pruebas en modo serie , algo como esto funcionará:
test.describe.serial('Generate a new customer', () => { let customerId let baseUrl = process.env.SHOP_URL test('Create new customer', async ({ request }) => { const response = await request.post(baseUrl + `/shopify/v5/customer`, {}) const responseBody = JSON.parse(await response.text()) expect(response.status()).toBe(200) customerId = responseBody.customerId //need to persist customerId to pass into following test }) test('Update customer details', async ({ request }) => { const response = await request.post(baseUrl + `/shopify/v5/customer/update`, {}) { data: { customerId: customerId, //customerId is undefined here name: "Fred" }, } ) expect(response.status()).toBe(200) }) });