代理配置
Cypress需要互联网访问才能正常工作。许多公司要求使用企业代理来访问互联网。如果您的公司有此要求,在配置Cypress使用代理之前,许多功能将无法使用:
- Cypress无法加载除
localhost
之外的网页。 - Cypress无法在baseUrl不可用时发出警告。
- Cypress无法连接Cypress Cloud进行登录或记录测试运行。
npm install cypress
在下载Cypress二进制文件时可能会失败。
如果您遇到上述任何或所有问题,可能需要为Cypress配置代理。以下是针对macOS、Linux和Windows的配置说明。
目前不支持代理自动配置(PAC)文件。如果您的组织使用PAC文件,请联系网络管理员询问应使用哪个HTTP代理访问公共 互联网,然后在Cypress中使用该代理。
目前不支持SOCKS代理。变通方法是在本地设置一个指向SOCKS代理的HTTP代理,然后在Cypress中使用该HTTP代理。 详细了解如何通过SOCKS转发HTTP代理。
在Linux或macOS上设置代理
在Linux或macOS上设置代理,请在运行Cypress之前在终端中执行以下命令:
export HTTP_PROXY=http://my-company-proxy.com
您还可以设置NO_PROXY
来绕过某些域的代理(默认情况下,仅绕过localhost
):
export NO_PROXY=localhost,google.com,apple.com
要使这些更改永久生效,可以将这些命令添加到shell的~/.profile
(~/.zsh_profile
、~/.bash_profile
等)中,以便每次登录时自动运行。
在Windows上设置代理
安装后启动时,Cypress默认会尝试加载Windows注册表中配置的代理。 了解如何在Windows中系统范围内设置代理。
首次下载Cypress时,cypress
命令行工具_不会_从Windows注册表读取代理设置。如果需要配置代理以使安装工作,必须按照以下说明设置适当的环境变量。
您也可以在运行Cypress之前设置代理环境变量以覆盖Windows注册表。这也是为cypress install
定义代理的唯一方法。在命令提示符中,定义所需的环境变量如下:
set HTTP_PROXY=http://my-company-proxy.com
在PowerShell中实现相同效果:
$env:HTTP_PROXY = "http://my-company-proxy.com"
要保存HTTP_PROXY
变量并在所有新shell中使用代理,请使用setx
:
setx HTTP_PROXY http://my-company-proxy.com
代理环境变量
本节指的是操作系统的环境变量,不是Cypress环境变量
Cypress自动读取系统的HTTP_PROXY
环境变量,并将该代理用于所有HTTP和HTTPS流量。如果设置了HTTPS_PROXY
环境变量,HTTPS流量将使用该代理。
要为某些域绕过代理,可以设置NO_PROXY
环境变量为逗号分隔的域名列表。默认情况下,不会代理localhost
的流量。要使Cypress通过代理发送localhost
的流量,请在NO_PROXY
中传递<-loopback>
。
如果同时提供了大写和小写版本的代理设置(例如,同时设置了HTTP_PROXY
和http_proxy
),将优先使 用小写变量。
使用自定义证书颁发机构(CA)
本节指的是npm配置变量和node环境变量,不是Cypress环境变量
Cypress在与Cypress Cloud通信时需要能够正确验证身份。通过代理连接时,通常使用自签名证书作为CA。为了处理此配置,Cypress自动读取npm配置的cafile
和ca
选项以及NODE_EXTRA_CA_CERTS
node环境变量。
为了模拟npm和node的行为,Cypress首先查看cafile
,然后查看ca
,并使用相应的证书作为CA的替代。例如,要使用/home/person/certs/ca.crt
的CA,请将以下内容添加到您的.npmrc
:
cafile=/home/person/certs/ca.crt
如果未设置cafile
和ca
,Cypress会查看系统环境变量NODE_EXTRA_CA_CERTS
,并使用相应的证书作为可信CA的扩展。
请注意,npm配置用作替代,而node环境变量用作扩展。
查看、取消和设置环境变量
为了正确配置代理,了解如何查看当前设置的环境变量、取消不需要的环境变量以及根据操作系统设置环境变量可能会有所帮助。