赛普拉斯-为各种语言使用环境变量

时间:2020-06-19 08:47:11

标签: ui-automation cypress

我想使用赛普拉斯环境变量来强制浏览器使用不同的语言。

这是我的示例cypress.json的样子:

{
"env":{
    "baseUrl": "localhost",
    "language": {
        "en": "5.44.16.0",
        "se": "31.211.192.0"
    },
}
}

我尝试过:

const market = Cypress.env(language.se) // se here is just an example, I want it to be dynamic
cy.server({
            onAnyRequest: function (route, proxy) {
                proxy.xhr.setRequestHeader(
                    "x-forwarded-for",
                    market
                );
            },
        });
        cy.visit(Cypress.env('baseUrl'))

但是没有用。

我想要实现的是能够通过强制从命令行执行语言来执行Cypress,如下所示:

cypress run --env language=se

“ se”存储cypress.json文件中的IP值的位置 我是赛普拉斯的新手,因此非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要从环境变量读取'ip'的方式是错误的。

--arg脚本中:

package.json

引用:How to run commands

使用npm run调用命令时,您需要使用-字符串传递命令的参数。

"test": "cypress run", 命令:npm

npm run test-local -- --env language=sedirect cypress command

cypress run --env language=se中:

config.json

{ "env":{ "baseUrl": "localhost", "ip": { "en": "5.44.16.0", "se": "31.211.192.0" } } } 规范中:

Test

screenshot

注意:我将const language = Cypress.env('language'); const market = Cypress.env('ip')[language] // se here is just an example, I want it to be dynamic cy.log(`All: ${JSON.stringify(Cypress.env('ip'))}`); cy.server({ onAnyRequest: function (route, proxy) { cy.log(`For language: ${language} => ${market}`); proxy.xhr.setRequestHeader( "x-forwarded-for", market ); }, }); cy.visit(Cypress.env('baseUrl')) 用于屏幕截图