Cypress: Электрон не поддерживает .finally ()? - PullRequest
2 голосов
/ 30 октября 2019

Electron 3.x добавил поддержку javascript .finally()

У меня проблема с этим, потому что мое приложение Vue фактически использует .finally при обработке запросов axios.

И запускает кипарисные тестыиспользование электрона не удается из-за .finally(). ...

Я не могу попросить команду выполнить рефакторинг кода для проблемы только с набором тестов и только с автоматическим режимом, потому что мы все еще работаем над местной культурой, чтобы согласиться проводить времячерез тестирование. Если я спрошу об этом у разработчиков, кто-то отключит тестирование ...

Вопрос: Есть ли способ, чтобы Electron мог переварить этот синтаксис?

Веб-приложение создано с использованием Laravel 5.8.x, Vue 2 и axios, передаваемых через webmix (цепочка веб-пакетов).

1 Ответ

4 голосов
/ 30 октября 2019

У вас есть два варианта:

  1. либо обновить кипарис до 3.5.0, который использует Электрон 5.

  2. или используйте полифилл.

    Сначала установите es-shims / Promise.prototype.finally :

    npm install -D promise.prototype.finally
    

    Затем в cypress/support/index.js:

    const { implementation: FinallyPolyfill } = require('promise.prototype.finally');
    
    function loadPolyfill ( win ) {
        win.Promise.prototype.finally = FinallyPolyfill;
    }
    
    // polyfill AUT's Promise
    Cypress.on('window:before:load', win => {
        loadPolyfill(win);
    });
    
    // polyfill Cypress runner's wrapper window Promise
    before(() => {
        loadPolyfill(window);
    });
    
...