Как интегрировать cy.visit (локальный или сценический URL) в среду CI? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть набор тестов, который открывает локальный URL, прежде чем делать кучу утверждений для некоторых элементов DOM.

Теперь я хотел бы интегрировать Cypress в мой CI / CD, но я не уверен, каксказать Сайпрессу посетить промежуточный URL вместо локального.

Есть идеи?

it('The body of the page is in viewport', function() {
    cy.visit(
      'http://mylocalurltovisit.local.com.au:8666/foo'
    );
    let initialPosition;
    const body = cy.get('body');
    body.should('have.class', 'pdfView');
    cy.get('.body-wrapper').should($el => {
      initialPosition = $el.position();
      expect(initialPosition.top).equal(0);
      expect(initialPosition.left).equal(0);
    });
  });

Я бы хотел, чтобы URL посещения автоматически переключался на промежуточный (например, http://staging.com.au/foo) в среде CI.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Используйте переменную окружения, но вместо того, чтобы поместить ее в файл конфигурации, передайте ее в команде CI, которая запускает Cypress, например,

cypress run --env TARGET=local
cypress run --env TARGET=staging

В тесте вы можете назначить правильный URL-адрес (один разтолько), используя before().

describe('...', () => {

  let url;

  before(function() {
    url = {
      local: 'http://...',
      staging: 'http://...'
    }[Cypress.env('TARGET')];
  })
0 голосов
/ 04 февраля 2019

Один из способов - попытаться создать два разных сайта url's для local and staging, как показано ниже в файле cypress.json.

{
    "env": {
        "project1_user": "admin",
        "project1_password": "password",
        "localSite" : {
            "url" : "http://mylocalurltovisit.local.com.au:8666/foo"            
        },
        "stagingSite" : {
            "url" : "http://staging.com.au/foo"

        }

    }
}

Затем получите URL для const внутри теста;

const localUrl = Cypress.env('localSite').url;
const stagingUrl = Cypress.env('stagingSite').url;

Вы можете позвонить в beforeEach или использовать прямо внутри теста.Точно так же вы можете использовать для постановки скважины.

beforeEach( function() {
    cy.visit(localUrl + '/somelogin.php' );

} );
...