У меня есть набор тестов в cypress.js, где перед каждым тестом я удаляю определенную базу данных из indexedDB:
Код: Выделить всё
beforeEach(() => {
cy.window().then(win => win.indexedDB.deleteDatabase('test_db'));
});
В каждом тесте я использую специальную команду, которая заглушает определенные свойства объекта окна:
Код: Выделить всё
Cypress.Commands.add('stubDevice', () => {
Cypress.on('window:before:load', win => {
// @ts-expect-error TS does not recognize userAgentData global variable
const userAgentData = { ...win.navigator.userAgentData };
const mockedUserAgentData = {
...userAgentData,
mobile: true,
}
Object.defineProperty(win.navigator, 'userAgentData', {
value: mockedUserAgentData,
configurable: true,
});
});
});
При запуске набора тестов первый тест работает нормально, однако перед каждым обратным вызовом перед вторым тестом выдается ошибка. Невозможно прочитать свойства неопределенного значения (чтение «indexedDB»). Похоже, что cy.window() возвращает undefined, и кажется, что использование defineProperty в win.navigator является проблемой, потому что, когда я закомментирую эту часть пользовательской команды, обратный вызов beforeEach работает нормально перед каждым тестом. Почему это происходит и как это предотвратить?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... -undefined