使用量角器的慢速网络3g的E2E Angular应用程序

时间:2018-11-06 09:59:22

标签: angular protractor angular-e2e

我有一个问题,我需要使用量角器在e2e测试中模拟慢速网络。我正在使用anuglar-cli和angular5。

我尝试使用setNetworkConnection来找到一种模拟慢速网络而没有成功的方法,但是它无法正常工作并引发异常。

问题仅存在于慢速网络上,我的预先输入正在创建一个额外的呼叫,因为之前的呼叫尚未完成,我正在使用此功能来做到这一点:

this.modelChanged
    .debounceTime(400)
    .distinctUntilChanged()
    .subscribe((model: FilterModel) => {
        this.filters.set(model.filterName, model.filterVal);
        const filters = {};
        this.filters.forEach((value: any, key: string) => {
            filters[key] = value;
        });
        this.ds.changeData({
            filters: filters
        });
    });

也许您也会有更好的建议来修复它。乐意接受任何建议。

现在,当我要使用更好的解决方案修复它时,为了防止回归,需要对其进行测试。

谢谢。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Chrome浏览器,请查看此页面https://peter.sh/experiments/chromium-command-line-switches/

启动浏览器时,可以向其传递参数以指定所需的行为。尤其要注意以下参数:

--shill-stub-“蜂窝= 1”-蜂窝最初已连接“蜂窝= LTE”-蜂窝已初始连接

--enabled-3g

--force-effective-connection-type

************* E D I T *************

您在配置文件中指定args。它应该具有如下所示的功能对象

capabilities: {
        "browserName": "chrome",
        "chromeOptions": {
            "args": ["incognito", "--window-size=1920,1080", "disable-extensions", "--no-sandbox", "start-maximized", "--test-type=browser"],
            "prefs": {
                "download": {
                    "prompt_for_download": false,
                    "directory_upgrade": true,
                    "default_directory": path.join(process.cwd(), "__test__reports/downloads")
                    }
                }
        }
    },

args是您要传递参数的地方

答案 1 :(得分:1)

我用那个。添加到量角器的config.ts文件中:

    function enableThrottling(flag: boolean) {
  if(flag){
    if (typeof (browser.driver as any).setNetworkConditions === 'function') {
      console.log('set network conditions ON');
      (browser.driver as any).setNetworkConditions({
        offline: false,
        latency: 150,
        download_throughput: 450 * 1024,
        upload_throughput: 150 * 1024
      });
    }
  }
  else {console.log('set network conditions OFF')}
}

然后您可以在测试期间通过enableThrottling(true)

启用/禁用它

等待时间/下载/上传的值可以更改为:

/*GPRS (50 * 1024)/(20 * 1024)/500 ms
Regular 2G (250 * 1024)/(50 * 1024)/300 ms
Good 2G (450 * 1024)/(150 * 1024)/150 ms
Regular 3G (750 * 1024)/(250 * 1024)/100 ms
Good 3G (1.5 * 1024 * 1024)/(750 * 1024)/40 ms
Regular 4G (4 * 1024 * 1024)/(3 * 1024 * 1024)/20 ms
DSL (2 * 1024 * 1024)/(1 * 1024 * 1024)/5 ms
Wifi (30 * 1024 * 1024)/(15 * 1024 * 1024)/2 ms */

例如,现在在上面的示例中,将其设置为 Good 2G