【发布时间】:2019-11-29 17:54:00
【问题描述】:
我尝试在 OpenShift 中运行 cypress 端到端测试。在本地它可以工作,但在 OpenShift 中通过 cypress run 命令启动测试后会发生错误。
OpenShift 中的错误消息
> kfuvo-sfa-e2e@0.0.1 cypress-run /e2e
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Failed to get 'appData' path
at App.app._setDefaultAppPaths (/e2e/cypress-cache/3.6.0/Cypress/resources/electron.asar/browser/api/app.js:51:41)
at Object.<anonymous> (/e2e/cypress-cache/3.6.0/Cypress/resources/electron.asar/browser/init.js:147:5)
at Module._compile (internal/modules/cjs/loader.js:839:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:851:10)
at Module.load (internal/modules/cjs/loader.js:701:32)
at tryModuleLoad (internal/modules/cjs/loader.js:633:12)
at Function.Module._load (internal/modules/cjs/loader.js:625:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:904:10)
at internal/main/run_main_module.js:24:11
如果我尝试在 docker 映像构建期间运行测试 (RUN npm run cypress-run),一切正常。 cypress-run npm 脚本只是“cypress run”的快捷方式。 如果我在容器启动后尝试运行测试,则会出现错误 (ENTRYPOINT ["/usr/local/bin/npm", "run", "cypress-run"])。
它发生在 cypress 实现的电子部分。我认为问题是,docker 镜像构建是由 root 用户执行的。容器将由不同的用户启动。似乎电子在 cypress 安装期间将 appData 路径设置为 root 用户的目录。稍后启动容器并运行测试的用户无法访问此 appData 文件夹。
我对电子不是很熟悉。也许有人知道如何强制电子在其他地方创建这个 appData 文件夹?
【问题讨论】:
-
你能解决你的问题吗?
-
你能解决这个问题吗?
标签: docker npm electron openshift cypress