В Cypress установите маркер в localStorage перед тестированием

Я хочу войти в систему и установить токен localStorage на клиенте (в частности, jwt)

Как я могу сделать это, используя cy.request, как предложено в документации Cypress?

Ответ 1

Вот пример добавления команды cy.login() которую вы можете использовать в любом тесте Cypress, или положить в hook до beforeEach.

Cypress.Commands.add('login', () => { 
  cy.request({
    method: 'POST',
    url: 'http://localhost:3000/api/users/login',
    body: {
      user: {
        email: '[email protected]',
        password: 'jakejake',
      }
    }
  })
  .then((resp) => {
    window.localStorage.setItem('jwt', resp.body.user.token)
  })

})

Затем в вашем тесте:

beforeEach(() => {
  cy.login()
})

Ответ 2

Я потратил так много часов на это и, наконец, могу с уверенностью заключить, что он никогда не будет работать для запросов OAuth.

Это может работать на локальном сервере, но не при получении токена для аутентификации.