在赛普拉斯中管理多个站点

时间:2020-06-21 07:32:59

标签: javascript node.js reactjs cypress e2e-testing

以下是我拥有的三个基于国家/地区的网站-

网站1-https://example.com/uk

网站2-https://example.com/fr

网站3-https://example.com/ie

在我的代码中,所有3个站点都使用相同的代码库并基于国家(uk | fr | ie),我正在传递一些默认配置,例如特定于国家/地区的文本以及某些功能启用/禁用开关等到内页。

在我的柏树中,我像-

一样创建了fixtures

/灯具-

  /uk
    -uk-config.json

  /fr
    -fr-config.json

  /ie
    -ie-config.json

我被integration文件夹中的文件夹结构所困扰,并且不知道推荐的方法。请帮助我。

选项1-

/集成-

/uk
  -homepage.spec.js
  -plp.spec.js
  -pdp.spec.js
  -cart.spec.js


/fr
  -homepage.spec.js
  -plp.spec.js
  -pdp.spec.js
  -cart.spec.js


/ie
  -homepage.spec.js
  -plp.spec.js
  -pdp.spec.js
  -cart.spec.js

此方法存在的问题-尽管此代码在各个国家/地区之间更加隔离,但是这里有很多重复的代码,并且在我们开设其他国家/地区商店时会不断增加。

选项2-

/集成-

  -homepage.spec.js
  -plp.spec.js
  -pdp.spec.js
  -cart.spec.js

在此通行证中,来自灯具的国家/地区特定配置。 TBH,我不知道该如何管理,如果有人发现这是一种更好的方法,并且可以提供一些指向此方法的指示,那将真的很有帮助。

1 个答案:

答案 0 :(得分:0)

问题:
如果我清楚地理解了您的问题,那么您想运行同一组测试,但针对不同的国家/地区,并且您在阅读时遇到了问题,那么该套件就存在一个问题。如果只是为了测试同一组测试而增加了太多的国家,则测试结果会增加。对吗?

解决方案:
您可以在命令行中将COUNTRY变量作为节点env变量传递,并将其分配为Cypress env变量并在测试中读取它。

"test": "COUNTRY=$COUNTRY ./node_modules/.bin/cypress open --env COUNTRY=$COUNTRY"

您的运行命令应如下所示

COUNTRY=fr npm run test
COUNTRY=in npm run test
COUNTRY=uk npm run test
COUNTRY=whatever npm run test
let json = require('config.json');
export const getCountryUrl = () => {
  return json[Cypress.env().COUNTRY]['url']
}
{
  "uk": {
    "url": "https://uk-website"
  },
  "fr": {
    "url": "https://fr-website"
  }
}