Я столкнулся с проблемой, которую не могу определить причину. В Cypress я определил следующие команды:
Cypress.Commands.add('createUser', (opts, permissions = []) => {
railsRequest('create_user', { user: opts, permissions })
.its('body')
.its('response');
});
Cypress.Commands.add('create', (type, opts) => {
railsRequest('create', { type, opts })
.its('body')
.its('response');
});
Cypress.Commands.add('login', { prevSubject: true }, (subject) => {
railsRequest('login', { id: subject.id })
.its('body')
.its('response')
.as('currentUser');
});
Команда createUser
не требует пояснений, команда create
позволяет мне создавать фиктивные данные на сервере, а команда login
регистрирует ранее созданного пользователя на сервере, который устанавливает cookie сеанса.
У меня есть следующая спецификация (в которой в настоящее время нет утверждений, так как я играю), с которой у меня проблемы:
describe('My Spec', () => {
beforeEach(() => {
cy.createUser({}, ['permission_name'])
.login();
});
it('testing', function() {
cy.visit('/');
cy.create('other_resource', { name: 'resource name' }, company_id: this.currentUser.company_id)
.as('resource')
.then(resource => {
cy.visit('/resource');
});
});
});
Ничего особенно сложного, но вот что происходит:
- Пользователь создан
- Авторизация происходит
- посещений '/', который работает правильно. Chrome показывает загрузку страницы, как и ожидалось
- Создан новый ресурс
- Когда все будет готово, зайдите в «/ resources» - здесь приложение перенаправляет на страницу входа. По-видимому, пользователь вышел из системы.
Чего я не понимаю, так это того, почему пользователь вышел из системы. Я добавил отладку cookie-файлов и вижу, что cookie-файл сеанса изменяется при каждом запросе, поэтому кажется, что cookie-файл сеанса в порядке, но что-то явно не работает правильно.
У нас нет проблем с самим приложением во время работы, поэтому я не думаю, что это бэкенд, но если у кого-то есть представление о том, что происходит, мне бы понравилась некоторая проницательность