我有一个测试套件,可以在对一些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(可以是http://staging.com.au/foo)。
发布于 2019-02-04 06:56:50
使用环境变量,但不要将其放在配置文件中,而是在启动Cypress的CI命令中传递它,例如
cypress run --env TARGET=local
cypress run --env TARGET=staging
在测试中,您可以使用before()
分配正确的url (仅一次)。
describe('...', () => {
let url;
before(function() {
url = {
local: 'http://...',
staging: 'http://...'
}[Cypress.env('TARGET')];
})
发布于 2019-02-04 02:24:59
一种方法是尝试为local and staging
站点创建两个不同的url's
,如下所示的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"
}
}
}
然后接收指向测试内部const
的urls;
const localUrl = Cypress.env('localSite').url;
const stagingUrl = Cypress.env('stagingSite').url;
您可以在beforeEach
中调用或直接在测试中使用。同样的方法,你也可以用来做一口油井。
beforeEach( function() {
cy.visit(localUrl + '/somelogin.php' );
} );
https://stackoverflow.com/questions/54509153
复制相似问题