Tengo un problema relacionado con la diferencia entre la ejecución de la canalización y mi entorno local. Estoy interceptando una solicitud usando el siguiente comando:
cy.intercept( { method: "GET", pathname: env.path, query: { dateFrom: "2020-12-31T22:00:00.000Z", dateTo: "2022-01-01T21:59:59.000Z", }, }, (req) => { expect(req.url).to.include( "&dateFrom=2020-12-31T22%3A00%3A00.000Z", "Date From included" ); expect(req.url).to.include( "&dateTo=2022-01-01T21%3A59%3A59.000Z", "Date to included" ); } ).as("filterByDates");Ejecutarlo en mi entorno local está bien, pero cuando lo ejecuto en la canalización hay un problema, porque la hora del servidor es UTC por defecto, la prueba siempre falla, porque la hora de envío no es la esperada.
Ahora estoy pensando cómo abordar esto, porque la entrada de tiempo no es mía, sino del complemento "datePicker", que siempre ingresa la hora de la máquina (servidor/entorno), por lo que la pregunta es cuál es un buen enfoque para esto. ¿tema? (Estoy usando day.js) ¿Convierto cada entrada de tiempo a UTC? ¿Intercepto la solicitud y hago que sea UTC -2 para la solicitud? ¿O debería simplemente ignorar todo después de "T", incluidas las horas/minutos/segundos, a lo que estoy totalmente en contra?
Realmente me alegraré si recibo respuestas, gracias de antemano.
Sí, debe convertir los valores esperados a TZ en común con el entorno de prueba.
Pero la prueba también tiene que saber en qué entorno se ejecuta.
var utc = require('dayjs/plugin/utc') dayjs.extend(utc) ... cy.intercept( ... (req) => { let expectedDateFrom = "2020-12-31T22:00:00.000Z"; const isCI = Cypress.env('CI'); if (isCI) { expectedDateFrom = dayjs().utc().format() } const encodedDateFrom = encodeURI(expectedDateFrom) expect(req.url).to.include(`&dateFrom=${encodedDateFrom}`,"Date From included");Como tiene dos fechas, ¿tal vez una función de conversión?
const toEnvFormat = (expected) => { const isCI = Cypress.env('CI'); if (isCI) { expected = dayjs().utc().format() } return expected; } cy.intercept( ... (req) => { const expectedDateFrom = toEnvFormat("2020-12-31T22:00:00.000Z"); const encodedDateFrom = encodeURI(expectedDateFrom) expect(req.url).to.include(`&dateFrom=${encodedDateFrom}`,"Date From included");Encontré una solución para simplemente agregar la zona horaria al package.json en la carpeta raíz de la siguiente manera:
"scripts": { "start": "TZ=Europe/Sofia npx cypress open", "run": "TZ=Europe/Sofia npx cypress run --browser chrome" },