Как я могу остановить сайт от автоматического выхода из системы, когда я использую Cypress? - PullRequest
0 голосов
/ 13 июня 2019

Я использую Cypress для автоматизации тестирования на веб-сайте моей компании, и после входа в систему щелчок по любому из интерактивных элементов немедленно выводит меня из системы. однако, это только когда я запускаю его через кипарис. ручное нажатие по-прежнему работает. Что я мог сделать, чтобы это исправить?

это для веб-сайта, созданного с использованием JavaScript.

Я ожидаю, что веб-сайт не выйдет из меня.

describe('signing in', function() {
    it('Visits the safe and reliable sign-in page', function() {
        cy.visit('https://testing.safeandreliable.care/sign-in') 
        cy.get('[id="at-field-username_and_email"]').type('bcramer@safeandreliablecare.com')
        cy.get('[id="at-field-password"]').type('******')
        cy.contains('Sign In').click()
  })
  it('signs into the default entity', function(){
      cy.get('[id="help-text-board"]').click({force:true})
      cy.wait(9000)
  })
})

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вам необходимо добавить следующее (наряду с другими изменениями, предложенными в https://stackoverflow.com/a/56593040/8928727):


beforeEach(() => {
        Cypress.Cookies.preserveOnce('whatever session id')
    })

Если вышеперечисленное отсутствует, вы все равно удалите свои куки между тестами, и в этом случае это не то, что вам нужно. Подробнее здесь: https://docs.cypress.io/api/cypress-api/cookies.html#Preserve-Once

0 голосов
/ 14 июня 2019

Что вам следует знать, так это то, что Cypress очищает состояние браузера при каждом запуске нового it().Так что то, что сделано в первом it(), теперь не во втором it().В вашем случае, логин в первом это, во втором это приложение больше не авторизовано.Чтобы убедиться, что Cypress остается в системе, вы должны переместить шаг входа в систему на before() или beforeEach() (зависит от того, хотите ли вы войти в систему один раз для описания или для каждого из них.

После публикации этого сообщениякажется, вам нравится входить в систему один раз и оставаться в системе, поэтому before() сделает всю работу за вас. Ваш код будет выглядеть так:

describe('signing in', function() {
  before('Logijn to the application', function() {
    cy.visit('https://testing.safeandreliable.care/sign-in')
    cy.get('[id="at-field-username_and_email"]').type('bcramer@safeandreliablecare.com')
    cy.get('[id="at-field-password"]').type('******')
    cy.contains('Sign In').click()
  })
  it('signs into the default entity', function(){
    cy.get('[id="help-text-board"]').click({force:true})
    cy.wait(9000)
  })
  it('next test', function () {
    // do other test but still logged in
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...