Я пытаюсь протестировать текстовый веб-редактор, который сохраняет и открывает файлы из локальной системы. Я использую Cypress v11.2.0 с Chrome v107.
Файловые операции используют API доступа к файловой системе через библиотеку browser-fs-access.
Я не могу протестировать какие-либо операции с файлами, такие как, например, сохранение. При вызове системной функции подчеркивания showSaveFilePicker тест выдает ошибку.
Это тестовый код:
it("'new' creates and links to an empty file", () => {
cy.visit("/");
cy.get("#new").click();
});
Вот изображение ошибки:
Операция работает нормально в приложении.
Мой вопрос: как кто-то должен протестировать кнопку, которая вызывает showSaveFilePicker
, используя Cypress?
Он будет работать с библиотекой плагинов cypress-real-events
import 'cypress-real-events'
it("'new' creates and links to an empty file", () => {
cy.visit('https://googlechromelabs.github.io/browser-fs-access/demo/');
cy.contains("button", 'Save Image File')
.realClick();
});
Хотя, проблема в том, что делать дальше? Тест не может взаимодействовать с живым всплывающим окном.
Я думаю, заглушить вызов, как показано здесь Всплывающее окно подтверждения.
Но это не нужно cypress-real-events
, так как диалог фактически не вызывается.
it("'new' creates and links to an empty file", () => {
cy.visit('https://googlechromelabs.github.io/browser-fs-access/demo/');
cy.window().then((win) =>
cy.stub(win, 'showSaveFilePicker').as('showSaveFilePicker').returns(true),
)
cy.contains("button", 'Save Image File')
.click();
cy.get('@showSaveFilePicker')
.should('have.been.calledOnce')
.invoke('restore')
});
Я надеялся, что после успешного нажатия кнопки я смогу найти способ взаимодействовать с диалогом. Я благодарю вас за то, что предвидели это и предложили подход.