Cypress | как сделать так, чтобы при изменении url тест не прерывался и не выкидывал в папку Specs?
Коллеги, приветствую.
Скажу сразу, я ни разу не гуру и вообще не автоматизатор, но для автоматизации рутинных проверок использую Cypress.
В общем возникла проблема, решение которой я никак не могу найти.
Есть маленький тестик, который проверяет наличие слова "Электронный" на странице.
it.("Название", () => { cy.visit("someUrl"); cy.getEl("field-login").type(v.operrtest); cy.getEl("field-password").type(v.operrtestpass); cy.getEl("button-save").click(); cy.getEl("field-name-docSeries").type(v.validPassSer); cy.wait(500); cy.getEl("field-name-docNumber").type(v.validPassNum); cy.contains("Найти").click(); cy.get(".preloader-container").should("not.exist"); cy.wait(2000); //---Переход на новый фронт--- cy.contains("Перейти на новую версию").click(); //---ввод реквизитов--- cy.getEl("overflow-menu-button-overflow-menu-button").click(); cy.contains("Выпустить дебетовую карту").click(); cy.contains("Запуск процесса").should("not.exist"); cy.pause(); cy.getEl("tariffPlan").type(v.tariffname).type("{enter}"); cy.getEl("cardTypepersonal").click(); cy.getEl("personalCardPaySystem") .type(v.personalCardPaySystem) .type("{enter}"); cy.getEl("personalCardCategory") .type(v.personalCardCategory) .type("{enter}"); cy.getEl("buttonComplete").click(); //---ЭФ корзины--- cy.contains("Единое заявление"); cy.getEl("button-goForward").click(); //---ЭФ печать--- cy.contains("Электронный"); }); |
it.("Название", () => { cy.visit("someUrl"); cy.getEl("field-login").type(v.operrtest); cy.getEl("field-password").type(v.operrtestpass); cy.getEl("button-save").click(); cy.getEl("field-name-docSeries").type(v.validPassSer); cy.wait(500); cy.getEl("field-name-docNumber").type(v.validPassNum); cy.contains("Найти").click(); cy.get(".preloader-container").should("not.exist"); cy.wait(2000); //---Переход на новый фронт--- cy.contains("Перейти на новую версию").click(); //---ввод реквизитов--- cy.getEl("overflow-menu-button-overflow-menu-button").click(); cy.contains("Выпустить дебетовую карту").click(); cy.contains("Запуск процесса").should("not.exist"); cy.pause(); cy.getEl("tariffPlan").type(v.tariffname).type("{enter}"); cy.getEl("cardTypepersonal").click(); cy.getEl("personalCardPaySystem") .type(v.personalCardPaySystem) .type("{enter}"); cy.getEl("personalCardCategory") .type(v.personalCardCategory) .type("{enter}"); cy.getEl("buttonComplete").click(); //---ЭФ корзины--- cy.contains("Единое заявление"); cy.getEl("button-goForward").click(); //---ЭФ печать--- cy.contains("Электронный"); });
Проблема возникает после того как мы доходим до строчки
cy.contains("Запуск процесса").should("not.exist"); |
cy.contains("Запуск процесса").should("not.exist");
Здесь мы ждём окончания загрузки прелоадера, после которого мы попадаем на новый URL и у нас открывается форма с инпутами, которые мы заполняем далее.
Но после того как указанная выше строка отрабатывает, нас просто выкидывает в интерфейсе Cypress в папку Specs.
Я не приложу ума как это исправить, может кто-то сталкивался с этой проблемой, прошу помощи.
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы при изменении URL тест не прерывался и не выкидывал в папку Specs в Cypress, можно использовать опцию `baseUrl` в файле `cypress.json`.
Прежде всего, убедитесь, что в вашем файле `cypress.json` указан правильный `baseUrl`, который будет использоваться для всех ваших тестов.
```php
{
"baseUrl": "http://localhost:3000"
}
```
Если вы хотите изменить URL во время выполнения теста без прерывания и переноса в папку `Specs`, вам нужно использовать команду `cy.visit()` с указанием нового URL.
```php
cy.visit('http://example.com', { failOnStatusCode: false })
```
Опция `{ failOnStatusCode: false }` позволяет тесту продолжить выполнение даже в случае ошибки при загрузке новой страницы.
Если вам нужно выполнить несколько действий на странице перед изменением URL, вы можете использовать цепочку команд Cypress. Например, вы можете сначала нажать на кнопку, а затем перейти на новую страницу.
```php
cy.get('button').click()
cy.url().then(url => {
cy.visit(url.replace('oldURL', 'newURL'), { failOnStatusCode: false })
})
```
Таким образом, вы можете гибко управлять изменением URL в тестах Cypress, предотвращая их прерывание и перенос в папку `Specs`.