赛普拉斯 - userAgent 开关

Cypress - userAgent switch

我无法change/override userAgent 使用配置文件。 我的柏树 json:

env object: {
    "platform" : "mobile"
}

我的plugins/index.js

module.exports = (on, options, config) => {
.
.
several on()s
.
.

on(config => {
    if (config.env.platform === 'desktop') {
      config.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36'
    } else if (config.env.platform === 'mobile') {
      config.userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
    }
    return config
  }) 
}

错误是:错误:注册插件时必须传递有效的事件名称。

我完全明白了,我无法在运行时更改它,但在此之前通过配置应该可以。配置被传递到module.export,所以我一无所知。我错过了什么?

注意:视口不是一个选项,我需要使用 userAgent 和 cy.visit() header 信息修改已弃用。

谢谢!

原理没问题,应该可以在插件里改user agent

虽然语法错误,on() 正在捕获一个事件,它需要一个事件名称参数:on('<event>', config => {.

但是您实际上没有或不需要为此设置事件,只需修改内联配置

module.exports = (on, options, config) => {

  ...

  if (config.env.platform === 'desktop') {
    config.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36'
  } 

  if (config.env.platform === 'mobile') {
    config.userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
  }

  return config
}