Cypress在Bitbucket Pipelines中命令行动态修改baseUrl失效问题
问题根因
你直接执行./hybris-url-mapping.sh时,系统会创建独立的子shell运行脚本内容,在脚本中给CYPRESS_BASE_URL赋值的操作仅在这个子shell内生效。脚本执行结束后子shell销毁,父shell(也就是Bitbucket Pipeline的当前执行环境)里的CYPRESS_BASE_URL仍为初始的空值,因此后续传给Cypress的参数实际是空值,自然会 fallback 到cypress.json里的默认配置。你在脚本中看到的echo输出只是子shell内的变量值,不代表父shell的变量被成功修改。
修复方案
调整脚本执行方式,改用
source命令在当前shell环境执行脚本,让变量赋值可以保留到后续命令执行阶段:
将Pipeline中的脚本行- ./hybris-url-mapping.sh $CYPRESS_BASE_URL改为
- source ./hybris-url-mapping.sh原命令传入的
$CYPRESS_BASE_URL参数在脚本中没有用到,可以直接删除。(可选)简化Cypress执行命令:Cypress原生支持识别
CYPRESS_前缀的环境变量,只要环境变量里的CYPRESS_BASE_URL生效,直接执行npx cypress run就会自动覆盖配置文件中的baseUrl,不需要手动传--env或者--config参数。
修复后可以在source脚本之后加一行echo $CYPRESS_BASE_URL,确认父shell中的变量值符合预期即可。
内容的提问来源于stack exchange,提问作者pontilicious
相关产品推荐
相关产品推荐

