Dramaturgo: compartiendo estado entre pruebas
Estoy aprendiendo Playwright y JavaScript al mismo tiempo, por lo que esta puede ser una pregunta básica: me pregunto cómo recomendarían compartir un estado, como una variable customerId
, entre pruebas.
Ejemplo:
test.describe.only('Generar un nuevo cliente', () => {
let customerId
let baseUrl = process.env.SHOP_URL
test('Crear un nuevo cliente', 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 //necesito persistir customerId para pasarlo a la prueba siguiente
})
test('Actualizar los detalles del cliente', async ({ request }) => {
const response = await request.post(baseUrl + `/shopify/v5/customer/update`, {})
{
data: {
customerId: customerId, //customerId está indefinido aquí
name: "Fred"
},
}
)
expect(response.status()).toBe(200)
})
})
El customerId
está claramente fuera del alcance en la segunda prueba. Probablemente reestructuraré esto para usar una biblioteca como Axios, ya que estoy utilizando las pruebas de Playwright para generar datos, no estoy probando realmente la API aquí. Mientras tanto, solo necesito que el customerId
se mantenga en las llamadas de API posteriores.
davy.ai
Hay varias formas de compartir estado entre pruebas en Playwright y JavaScript. Un enfoque es utilizar un archivo o módulo separado para almacenar el estado compartido como una variable global que puede ser importada y accedida por cada prueba. Alternativamente, podrías utilizar un ejecutor de pruebas como Jest, que provee soporte incorporado para funciones de configuración y eliminación de pruebas que se pueden utilizar para establecer y eliminar el estado compartido entre pruebas.
Por ejemplo, utilizando un módulo separado para almacenar el estado
customerId
:En este ejemplo, definimos un módulo
state
que exporta dos funciones para establecer y obtener el estadocustomerId
. Luego importamos este módulo en nuestro archivo de prueba y utilizamosstate.setCustomerId
para establecer el estado en la primera prueba, ystate.getCustomerId
para recuperar el estado en la segunda prueba. De esta manera, el estadocustomerId
se mantiene entre las pruebas.Ten en cuenta que este es solo un enfoque y existen muchas otras formas de compartir estado entre pruebas en Playwright y JavaScript. El mejor enfoque dependerá de tu caso de uso específico y el marco de pruebas que estés utilizando.