在GitlabCI上运行测试时,ChromeDriver存在问题

时间:2020-05-16 17:45:07

标签: electron gitlab-ci spectron

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

我不知道它是如何工作的,我知道它使用了docker镜像并且可以运行所需的命令。

我选择了node:8图像作为开始图像(我正在做一个电子投影,也许对此有更好的图像)

问题是,如果我在计算机上运行命令“ npm test”,它可以很好地运行并且可以通过所有测试,但是它不能在gitlab ci上正常工作,我也不知道为什么。

我正在Windows上进行开发,而docker映像使用linux,这可能是个问题吗?

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

我很迷路。还有其他办法可以工作吗?也许是另一个Docker映像?

我的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


获得错误: Error 测试代码(只要与此相关) testing

1 个答案:

答案 0 :(得分:3)

您能用硒做什么?

例如,如果您的电子应用是民意测验,则可以使用硒:

  • 验证民意调查应用程序显示10个问题。如果检测到负数小于10,则抛出错误
  • 如果需要回答问题,则可以确保按下提交按钮时,每个问题旁边都会出现红色警告 。如果提交操作未触发警告和/或表单已提交,则会引发错误。

硒的作用原理

  • 开发人员使用硒语言实现(Java,nodejs,python等)创建一些测试
  • 已选择安装了正确浏览器的机器(称为硒机器)。在这台计算机上,至少必须安装一个浏览器及其相应的 SeleniumDriver 。 OperaChromiunDriver(用于歌剧),FirefoxDriver(用于Firefox)等
  • 在硒机中,必须启动具有正确配置的硒服务器。该服务器使用用户名和密码发布一种网址
  • 您可以在开发人员笔记本电脑上使用配置使用硒机执行测试。
  • 在开发阶段,您可以避免使用硒服务器,因为笔记本电脑上已经存在所有必需的人员。但是,如果您在企业或组织中,则无法或不建议在笔记本电脑上运行测试。想象一下,您自己在凌晨2:00在笔记本电脑中运行所有工作的Web应用程序的测试:另一方面,假设您的持续集成服务器在凌晨2:00运行许多测试,并将结果发送给漂亮的仪表板。

您的问题

我正在Windows上进行开发,而docker映像使用linux,这可能是个问题吗?

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

我很迷路。还有其他办法可以工作吗?也许是另一个Docker映像?

您正在使用电子进行显影。电子是一种“浏览器”,因此硒是自动化测试的最佳选择。

问题是,如果我在计算机上运行命令“ npm test”,它可以很好地运行并且可以通过所有测试,但是它无法在gitlab ci作业上正常工作,我也不知道为什么

因为您的测试代码执行了 VISUAL TESTS (视觉测试),因此需要一台具有可视浏览器的计算机及其相应的硒驱动程序。


我必须做什么才能使其正常工作?

www.browserstack.com

作为总结,browserstack为您提供了带有许多台式机和android浏览器的硒服务器。只需几行代码,您的测试就可以在浏览器堆栈云上运行它,并且您将拥有一个仪表板,其中包含结果和视频,以证明错误。

以下是一些替代方案:https://alternative.me/browserstack

实施您自己的硒服务器

正如我所说,您将需要一台带有用户界面,浏览器,硒驱动程序等的机器

无头浏览器

如果您没有计算机或浏览器堆栈,则可以进行以下研究:无头浏览器

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

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

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

有些选项: