Я пытаюсь настроить CI e2e для автоматизации приложения реакции.
В моем приложении у меня есть ProtectedRoute компонент, который перенаправляет незарегистрированного пользователя на страницу входа в систему:
import React from "react";
import { Route, Redirect } from "react-router-dom";
export const ProtectedRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props =>
localStorage.getItem("user") ? (// here it checks if localstorage has "user" key
<Component {...props} />
) : (
<Redirect
to={{ pathname: "/login", state: { from: props.location } }}
/>
)
}
/>
);
В моем тесте я пытаюсь получить доступ к некоторому «защищенному» маршруту и сделать некоторые проверки на странице.
Как рекомендовано в документации на кипарис - я не вхожу в систему с помощью пользовательского интерфейса, но вместо этого я использую для вызова какой-то командыя создал для входа в систему программно:
beforeEach(() => {
cy.login(); // the command call
})
describe('dashboard', () => {
it('should show dashboard page', () => {
cy.url().should('include', 'dashboard');
})
})
Вот команда, она просто создает «пользовательский» ключ внутри localStorage:
Cypress.Commands.add('login', () => {
const user = {"UserName": "Francisco","UserLastName": "DeAssisy"}
localStorage.setItem('user', JSON.stringify(user))
}
В моем локальном окружении я могуувидеть прохождение тестов.Но, при запуске travis-CI, я вижу, что тесты постоянно терпят неудачу, потому что URL-адрес "login"
Вот мой конфигурационный файл travis:
language: node_js
node_js:
- 10.13
addons:
apt:
packages:
# Ubuntu 16+ does not install this dependency by default, so we need to install it ourselves
- libgconf-2-4
cache:
# cache both npm modules and Cypress binary
directories:
- ~/.npm
- ~/.cache
script:
- npm run format:check
- npm run lint
- npm test
- node fake-server/server &
- npm run test:all
Интересный факт: когда я запускаю тесты на странице входа в систему перед тестами на панели инструментов, тесты проходят (поскольку ключ пользователя 'localStorage уже установлен)
Пожалуйста, помогите
Спасибо