Testing 如何在CI环境中集成cy.visit(本地与后台url)?

Testing 如何在CI环境中集成cy.visit(本地与后台url)?,testing,continuous-integration,cypress,Testing,Continuous Integration,Cypress,我有一个测试套件,在对一些DOM元素进行一系列断言之前打开一个本地url 现在我想将Cypress集成到我的CI/CD中,但我不确定如何告诉Cypress访问登台url而不是本地url 有什么想法吗 it('The body of the page is in viewport', function() { cy.visit( 'http://mylocalurltovisit.local.com.au:8666/foo' ); let initialPosi

我有一个测试套件,在对一些DOM元素进行一系列断言之前打开一个本地url

现在我想将Cypress集成到我的CI/CD中,但我不确定如何告诉Cypress访问登台url而不是本地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自动切换为CI环境上的登台url(可能是)。一种方法是尝试在
cypress.json
文件中为
本地和登台
站点创建两个不同的
url

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

        }

    }
}
然后在测试内部接收指向
const
的URL

const localUrl = Cypress.env('localSite').url;
const stagingUrl = Cypress.env('stagingSite').url;
您可以在每次测试之前调用
,也可以直接在测试内部使用。同样的方法,你可以使用暂存现场一口井

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

} );

使用环境变量,但不要将其放入配置文件中,而是将其传递到启动Cypress的CI命令中,例如

cypress run --env TARGET=local
cypress run --env TARGET=staging
在测试中,您可以使用
before()
分配正确的url(仅一次)

description(“…”,()=>{
让url;
在(函数()之前){
url={
本地:'http://...',
登台:'http://...'
}[Cypress.env('TARGET')];
})