Zet*_*eth 0 cypress cypress-configuration
我有一个cypress.config.ts类似这样的文件:
import {defineConfig} from "cypress";
export default defineConfig(
{
e2e: {
baseUrl: 'http://localhost:3000',
}
}
...
...
Run Code Online (Sandbox Code Playgroud)
问题 1:我正在构建的应用程序必须使用不同的端口来实现不同的功能。例子:
问题 2: Cypress 自动将尾部斜杠添加到baseUrl,因此我以后无法自己添加端口(在单独的测试中),而不需要进行一些字符串操作体操。
那么我该如何设置,以便在测试开始时可以定义应使用哪个端口?比如这样:
// This doesn't work:
it('Test feature 1', () => {
Cypress.env('PORT', 3000);
cy.request('GET', 'feature-1').as('featureOne')
...
...
});
it('Test feature 2', () => {
Cypress.env('PORT', 3002);
cy.request('GET', 'feature-2').as('featureTwo')
...
...
});
Run Code Online (Sandbox Code Playgroud)
baseUrl为空字符串如果让我cypress.config.ts这样:
import {defineConfig} from "cypress";
export default defineConfig(
{
e2e: {
baseUrl: '',
}
}
...
Run Code Online (Sandbox Code Playgroud)
然后我可以像这样完整地引用 URL:
it('Test feature 1', () => {
Cypress.env('PORT', 3000);
cy.request('GET', 'http://localhost:3000/feature-1').as('featureOne')
...
...
});
it('Test feature 2', () => {
Cypress.env('PORT', 3002);
cy.request('GET', 'http://localhost:3002/feature-2').as('featureTwo')
...
...
});
Run Code Online (Sandbox Code Playgroud)
有用。但这似乎很愚蠢。
cypress.config.ts我想象能够做这样的事情:
const PORT = process.env.PORT || 3000
export default defineConfig(
{
e2e: {
baseUrl: 'http://localhost' + PORT,
}
}
...
...
Run Code Online (Sandbox Code Playgroud)
这可行,但我无法覆盖测试中的 PORT ( Cypress.env('PORT', 3002);)。不知道是不是因为太晚了。
所以总的来说,这是行不通的。但如果这样做的话那就很聪明了。:-)
小智 5
您可以将 更改baseUrl为您想要的任何内容Cypress.config('baseUrl', something)。
// cypress.config.js
const { defineConfig } = require("cypress");
module.exports = defineConfig({
e2e: {
baseUrl: 'http://localhost:3000',
},
})
Run Code Online (Sandbox Code Playgroud)
it('changes the baseUrl', () => {
Cypress.config('baseUrl', 'http://localhost:3002')
cy.visit('/');
cy.url().should('eq', 'http://localhost:3002/') // passes
})
Run Code Online (Sandbox Code Playgroud)
或者
it('changes the baseUrl', () => {
Cypress.config('baseUrl', 'http://example.com')
cy.visit('/');
cy.url().should('eq', 'http://example.com/') // passes
})
Run Code Online (Sandbox Code Playgroud)