首页 > 解决方案 > 在 cypress 中管理多个站点

问题描述

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

站点 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,我不知道我该如何管理它,如果有人发现这是一种更好的方法并且可以提供一些指向这将非常有帮助,那就太好了。

标签: javascriptnode.jsreactjscypresse2e-testing

解决方案


问题:
如果我清楚地理解了您的问题,您想针对不同的国家/地区运行相同的测试集,并且您在阅读时遇到问题,并且如果为了测试相同的集合而添加太多国家/地区,则套件会增加的测试。正确的 ??

解决方案:
您可以COUNTRY从命令行将变量作为节点环境变量传递,并将其分配为赛普拉斯环境变量并在测试中读取它。

"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"
  }
}

推荐阅读