Функция Cypress cy.visit () блокирует время ожидания и пропускает тесты только при открытии веб-приложения VueJS - PullRequest
0 голосов
/ 20 марта 2020

Функция Cypress cy.visit () отключается и прерывает все оставшиеся тесты при открытии VueJS веб-приложения. Если я открываю домашнюю страницу любого другого сайта, который не VueJS, он работает просто отлично. Вот мой базовый c config:

[package.json]

 "dependencies": {
    "cypress": "^4.2.0",
    "cypress-cucumber-preprocessor": "^2.0.1" 
}

[cypress.json]

{ 
    "defaultCommandTimeout": 8000,
    "pageLoadTimeout": 10000,
    "testFiles": "**/*.{feature,features}" 
}

[\ cypress \ plugins \ index.js]

const cucumber = require('cypress-cucumber-preprocessor').default
module.exports = (on, config) => {
  on('file:preprocessor', cucumber())
}

[\ cypress \ интеграционные \ cucumber-tests \ login.feature]

Feature: Login
    As a user I desire to login
    Scenario: Login to a Website
        Given I open a website

[\ cypress \gration \ cucumber-tests \ login \ loginSteps.js]

import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps'
import LoginPage from './loginPage'

Given('I open a website', () => {
    LoginPage.visit()
})

[\ cypress \gration \ cucumber-tests \ login \ loginPage.js]

//const URL = 'https://www.google.com' // Not a VueJS WebApp - Works Fine
//const URL = 'https://www.gitlab.com' // This is a VueJS WebApp - Times out and aborts rest of tests
const URL = 'https://www.nintendo.com' // This is a VueJS WebApp - Times out and aborts rest of tests
// List of VueJS WebApps: https://www.techuz.com/blog/top-9-websites-built-using-vue-js/

class LoginPage {
    static visit() {
        cy.wait(3000)
        cy.visit(URL)
    }
}

export default LoginPage

[Скриншот - Передача в Google]
enter image description here

[Снимок экрана - Сбой Nintendo]
enter image description here

[Снимок экрана - Сбой на Gitlab]
enter image description here

[Снимок экрана - Передача с локальным VueJS экземпляром]
enter image description here

[Устранение неполадок]

  • Я пытался вернуться к предыдущим версиям Cypress
  • Я пробовал не VueJS сайты, которые все работают rk
  • Я пробовал VueJS веб-сайтов, которые все терпят неудачу
  • Я искал вокруг Google, чтобы найти что-то в связи с этим конкретно, и все, что я нахожу, это то, что Cypress имеет возможность тестировать VueJS, но никаких подробностей о его сбое.
  • В Google есть статьи, в которых говорится об этом тайм-ауте, и обычно это связано с увеличением времени загрузки страницы в кипарисе. json (этот контекст non Vue WebApps), и я вынудил мой провал таким образом, установив мой тайм-аут на 1000 мс, что вызвало его сбой ... так что эта статья мне не помогла.

    Пожалуйста, дайте мне знать, если дополнительная информация поможет выяснить это. Любая помощь по этому вопросу будет принята с благодарностью, спасибо! =)

1 Ответ

1 голос
/ 22 марта 2020

Я бы предложил установить локальную версию VueJS шаблона

https://github.com/vuejs-templates/simple

Направьте ваши кипарисовые тесты на это просто, чтобы проверить его реальные сайты, которые вы пытаетесь проверить.

Если это работает, то вполне возможно, что XHR звонит на фоне сайтов, которые вы пытаетесь посетить.

В этом случае вам необходимо изучить cy.route, чтобы обработать их, прежде чем приступить к следующему взаимодействию.

Пример пользовательской команды кипариса, которую мы используем для взаимодействия с XHR, называет ее довольно простой c, но аффективной.

Cypress.Commands.add('apiCheck', (endpoint : string) => {
cy.server();
cy.route('GET', endpoint).as('apiCheck');
});
...