В spec.js
файле добавьте следующий код:
describe('Random VMR for ESG',function() {
beforeEach(() => {
cy.visit('https://www.google.com/calendar')
})
it('type email & password', function() {
cy.get('#Email').type('my user')
cy.get('#next').click()
cy.get('#Passwd').type('my password')
cy.get('#signIn').click()
})
})
В папке support
, в command.js
добавьте следующий код:
Cypress.Commands.add('login', ()=> {
cy.request({ // cy.request is not bound by any security and will bypass the login part
method: 'POST' , // Post request to URL along with body
url: 'https://www.google.com/calendar',
body: {
user: {
email: 'my user',
password: 'my password',
}
}
})
//server sends back the response JSON payload
.then((resp) => { //token extracted from JSON payload and is saved in LocalStorage
window.localStorage.setItem('jwt' , resp.body.user.token)
})
})
В файле spec.js
есть код, который просто посещает URL и проверяет тип ввода email
и password
и выполняет вход.
Проблема была в том, что перенаправлял страницу обратно на первую страницу сразу после входа. Чтобы обойти это поведение, мы используем cy.request
в commands.js
файле, так как cy.request
запрашивает вне ограничений браузера , т.е. он не связан никакими ценными бумагами.
После того, как вы пройдете надлежащий тест e2e для входа в систему, нет смысла продолжать cy.visit()
вход в систему и ждать, пока вся страница загрузит все связанные ресурсы, прежде чем выполнять какие-либо другие команды. Это может замедлить весь наш набор тестов. Используя cy.request()
, мы можем обойти все это, потому что он автоматически получает и устанавливает куки так же, как если бы запросы поступали из самого браузера.
Поэтому запрос POST был отправлен вместе с полезной нагрузкой JSON или телом. Теперь, после успешной проверки тела запроса, наш код приложения извлекает токен из полезной нагрузки и сохраняет его в локальном хранилище , а также добавляет токен во все заголовки запроса, чтобы сервер API мог аутентифицировать последующий запрос, поступающий из наше приложение.
Когда наше приложение загружается, оно проверяет, что токен уже находится в локальном хранилище или нет, если это так, то оно идет вперед и устанавливает его в агенте запроса. Таким образом, он будет обходить часть входа, когда вы будете тестировать GSuite .