Electron 在GitlabCI上运行测试时ChromeDriver出现问题

Electron 在GitlabCI上运行测试时ChromeDriver出现问题,electron,gitlab-ci,spectron,Electron,Gitlab Ci,Spectron,我是Gitlab CI的新手,我正在尝试在提交时自动测试我的应用程序 我不知道它是如何工作的,我知道它使用docker图像,并运行您想要的命令 我选择了节点:8图像开始(我正在做一个电子项目,可能有更好的图像) 问题是,如果我在我的计算机上运行命令“npmtest”,它运行得很好,并且所有测试都通过了,但是它在gitlab ci作业中不起作用,我不知道为什么 我在windows上开发这个,docker镜像使用linux,这可能是个问题吗 错误总是发生在ChromeDriver上。我查找了文件夹,

我是Gitlab CI的新手,我正在尝试在提交时自动测试我的应用程序

我不知道它是如何工作的,我知道它使用docker图像,并运行您想要的命令

我选择了节点:8图像开始(我正在做一个电子项目,可能有更好的图像)

问题是,如果我在我的计算机上运行命令“npmtest”,它运行得很好,并且所有测试都通过了,但是它在gitlab ci作业中不起作用,我不知道为什么

我在windows上开发这个,docker镜像使用linux,这可能是个问题吗

错误总是发生在ChromeDriver上。我查找了文件夹,发现只有一个exe,所以我下载了驱动程序的linux发行版并将其插入其中。 在运行测试之前,我也会执行驱动程序(在我的计算机中,这是不需要的,它会自动执行),但仍然会得到相同的错误

我迷路了。有没有其他办法可以让它起作用?也许是另一张docker的照片

My gitlab-ci.yml:

variables:
  VERSION_ID: '1.0.$CI_PIPELINE_ID'

stages:
  - build

build:
  image: node:8
  stage: build
  artifacts:
    paths:
      - $CI_PROJECT_DIR/dist/*.*
  script:
    - apt-get update
    - apt-get -y install libnss3-dev
    - npm install
    - chmod 0777 ./node_modules/.bin/mocha
    - chmod 0777 ./node_modules/electron-chromedriver/bin/chromedriver
    - ./node_modules/electron-chromedriver/bin/chromedriver&
    - npm test


获得的错误: 测试代码(如果这是相关的)

硒可以做什么? 例如,如果您的electron应用程序是民意测验,那么使用selenium,您可以:

  • 验证民意测验应用程序是否显示10个问题。如果检测到负10,则抛出一个错误
  • 如果您的问题是必需的,您可以确保当按下提交按钮时,每个问题旁边都会出现红色警告。如果提交操作未触发警告和/或表单已提交,则引发错误
硒的作用机理
  • 开发人员使用selenium语言实现(java、nodejs、python等)创建一些测试
  • 选择了具有正确浏览器安装的机器(称为selenium机器)。在此机器中,必须至少安装一个浏览器及其相应的SeleniumDriver。OperaChromiunDriver for opera、firefox的FirefoxDriver等
  • 在selenium机器中,必须使用正确的配置启动selenium服务器。此服务器发布一种带有用户和密码的url
  • 在开发者笔记本电脑上,您可以使用配置在selenium机器上执行测试
  • 在开发阶段,您可以避免使用selenium服务器,因为您的笔记本电脑上已经有了所有必需的人员。但是,如果您在企业或组织中,则不可能或不推荐在您的笔记本电脑上运行测试。想象一下你自己在凌晨2:00在笔记本电脑上运行你工作的所有web应用程序的测试。另一方面,设想您的持续集成服务器在凌晨2:00运行几十个测试,并向您发送一个带有结果的漂亮仪表板

你的问题 我在windows上开发,docker镜像使用linux,这可能是个问题?

Windows不是开发的最佳选择。默认浏览器“向导”安装将在开发阶段帮助您,但如果您升级到下一阶段“测试/生产”则没有任何像样的云提供商尝试为selenium测试或世界上的任何技术提供WINDOWS。众所周知,windows中对docker的支持非常差。我建议你使用linux,它对我们这样的程序员来说非常酷

我迷路了。有没有其他办法可以让它起作用?也许是另一张docker图片?

你在用电子显影。Electron是一种“浏览器”,因此Selenium是自动化测试的最佳选择

问题是,如果我在我的计算机上运行命令“npm test”,它运行得很好,并且所有测试都通过了,但是它在gitlab ci作业中不起作用,我不知道为什么。

因为您的测试代码执行的是视觉测试,这需要一台带有视觉浏览器及其相应的selenium驱动程序的机器


我必须做什么才能让它工作? www.browserstack.com 总而言之,browserstack为您提供了一个包含大量桌面和android浏览器的selenium服务器。通过几行代码,您的测试将运行它browserstack cloud,您将拥有一个仪表板,其中包含结果和视频,作为错误的证明

以下是一些备选方案:

实现您自己的selenium服务器 正如我所说,您需要一台具有用户界面、浏览器、selenium驱动程序等的机器

无头浏览器 如果您没有机器或browserstack不是您的选择,您可以研究:无头浏览器

总而言之,无头浏览器是一种内存中的浏览器实现,因此您可以在没有用户界面(azure、amazon、google等)的shell中执行测试

无论如何,您将需要selenium驱动程序和其他配置来实现您的测试在没有用户界面、没有chrome、firefox、opera等的机器上运行

这种方法的缺点是浏览器在内存中实现。无法识别web或javascript的某些很酷的功能。例如:拖放效果。如果没有用户界面,该如何工作:S?。如果只是简单的表单,无头浏览器可以帮助您

以下是一些选项:


你好。如果您使用的是chrome驱动程序,当您运行本地测试(windows)时,会打开chrome浏览器,并执行一些操作(单击、填写表单等),最后是浏览器退出和shell中的报告?@JRichardsz我现在不执行任何操作,但是的,会打开chrome浏览器(这是一个电子应用程序,因此我认为是等效的)Chrome驱动程序通常与selenium相关。Selenium通常用于质量保证团队,其目标是通过web/html表单和/或javascript代码实现可视化自动化(测试)。通常,这些测试是在打开的浏览器中执行的,人类可以看到如何在浏览器中执行操作(就像有人在移动鼠标一样)。您的目标是:可视化测试验证吗