StivinKing
@StivinKing

Как решить проблемы с e2e тестированием большого проекта на Angular (4)?

Доброго времени суток,

есть довольно крупный проект, который написан на Angular (4). Сейчас появилась задача покрыть весь проект e2e и unit тестами. Решил начать с e2e. Посмотрел все нужные зависимости и настройки, поставив рядом свежую версию через Angular Cli. Прописал простой тест, несерьезный, просто проверив работоспособность, но в итоге даже он не работает.
В директории /e2e есть 2 файла:
app.po.ts
import { browser, by, element } from 'protractor';

export class AppPage {
  navigateTo() {
    return browser.get('/');
  }

  getParagraphText() {
    return 'Welcome to app!';
  }
}

app.e2e-spec.ts
import { AppPage } from './app.po';

describe('Project App', () => {
  let page: AppPage;

  beforeEach(() => {
    page = new AppPage();
  });

  it('should display welcome message', () => {
    page.navigateTo();
    console.log('======================');
    console.log(page.getParagraphText());
    expect(page.getParagraphText()).toEqual('Welcome to app!');
  });
});


По сути, такой скрипт должен закончиться успехом. Но что-то идет не так. Запускаю ng e2e, проходит сборка проекта (ng serve), проходят начальные настройки, выходит сообщение: "Jasmine started". После этого открывается браузер (тестовый Google Chrome) и начинается загрузка приложения (preloader). Выводится console.log() из файла app.e2e-spec.ts и всё падает со следующими ошибками:
E/protractor - Could not find Angular on page localhost:49152 : retries looking for angular exceeded

Project App
✗ should display welcome message
- Failed: Angular could not be found on the page localhost:49152 If this is not an Angular application, you may need to turn off waiting for Angular.

Может кто сталкивался с таким?
  • Вопрос задан
  • 431 просмотр
Решения вопроса 1
StivinKing
@StivinKing Автор вопроса
Проблема в итоге у меня была следующая: фронт общается с бэком через nginx и при инициализации приложения у меня идет запрос на бэк. Естественно, при запуске тестов поднимался сервер на localhost:n-порт который не мог общаться с бэком. В результате запроса при инициализации прилетала 500-ка и тест валился.

Если у кого такая же проблема из-за бэка, когда всё разруливает nginx, то для тестов нужно прописать прокси. Вкратце, рядом с package.json создаем файл "proxy.conf.json", пишем туда:
{
    "/api": {
        "target": "http://НужныйАдрес:НужныйПротокол",
        "secure": false
    }
}

И в package.json прописываете для удобства: "e2e": "ng e2e --proxy-config proxy.conf.json" и запускаете: npm run e2e
Если хотите узнать больше про прокси, вот ссылка
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы