#javascript #cypress
Вопрос:
Мне удается запускать CYPRESS без каких-либо проблем на сайте без аутентификации.
Но в интранете я не могу идентифицировать себя. Я должен войти в систему раньше.
Вот мой код:
describe('home', () => {
it('home accessible', () => {
cy.visit('/')
})
//We fill the login FORM
it('User Field', () => {
cy.get('input#user')
.type('login')
})
it('User pass', () => {
cy.get('input#pass')
.type('mot de passe')
})
it('check consent', () => {
cy.get('input#permalogin')
.click({ force: true })
})
it('submit', () => {
cy.get('input.btn.btn-primary')
.click()
})
//the form is submit, we can visit a page
it('autre page!!', () => {
cy.visit('/luniversite/page-2',{ timeout: 30000 })
})
//We check the title of the page, we should be on the page 2
it('titre page 2', () => {
cy.title().should('eq', 'page 2: INTRANET)
})
КИПАРИС и видео с КИПАРИСОМ показывают мне, что я заблокирован на странице аутентификации.
Тест на заголовке страницы неверен, я не получаю доступ к странице 2. Я остаюсь на первой странице для входа в систему.
Ответ №1:
Во-первых, первое: похоже, что это один тест, но вы указываете несколько функций it (), что разбивает его на несколько тестов, а это не то, что вы хотите. Вы захотите перестроить свой тест следующим образом:
describe("home", () => {
it("home accessible", () => {
cy.visit("/");
//We fill the login FORM
cy.get("input#user").type("login");
cy.get("input#pass").type("mot de passe");
cy.get("input#permalogin").click({ force: true });
cy.get("input.btn.btn-primary").click();
cy.visit("/luniversite/page-2", { timeout: 30000 });
cy.title().should("eq", "page 2: INTRANET");
});
});
С учетом этого трудно понять, что делает ваше приложение, без более подробной информации:
1/ При выполнении вручную выполняется ли правильная аутентификация вашего приложения с использованием предоставленных учетных данных? У вас есть ошибки консоли? Определили ли вы, что используемые вами локаторы элементов на самом деле взаимодействуют с элементами так, как вы ожидаете?
2/ Пытается ли ваш тест перейти к /luniversite/page-2
до завершения аутентификации? Если это так, вы можете использовать функцию перехвата вызова для проверки подлинности и дождаться его завершения:
// get your authentication POST request from network tab of devtools and use that in the cy.intercept call
cy.intercept('POST', '/yourAuthenticationCallUrl').as("@authenticationCall")
// YOUR LOGIN STEPS HERE
cy.wait("@authenticationCall") //waits for the authentication call to complete before moving to the next step
cy.visit("/luniversite/page-2", { timeout: 30000 });