在 GitlabCI 上运行测试时 ChromeDriver 的问题

IXT*_*nai 5 gitlab-ci electron spectron

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

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

我选择了 node:8 图像开始(我正在做一个电子项目,也许有更好的图像)

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

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

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

我很失落。有什么办法可以解决这个问题吗?也许另一个码头工人形象?

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


Run Code Online (Sandbox Code Playgroud)

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

JRi*_*dsz 3

硒可以做什么?

例如,如果您的电子应用程序是一个民意调查,那么使用 Selenium 您可以:

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

硒的工作原理

  • 开发人员使用 selenium 语言实现(java、nodejs、python 等)创建一些测试
  • 选择安装了正确浏览器的机器(将其称为 selenium 机器)。在这台机器上至少必须安装一个浏览器及其各自的SeleniumDriver。用于 Opera 的 OperaChromiunDriver、用于 Firefox 的 FirefoxDriver 等
  • 在selenium 机器中,您必须使用正确的配置启动selenium 服务器。该服务器发布一种带有用户名和密码的 url
  • 从您的开发人员笔记本电脑上,您可以使用配置在 selenium 机器上执行测试。
  • 在开发人员阶段,您可以避免使用 selenium 服务器,因为所有必需的人员都已存在于您的笔记本电脑上。但是,如果您在企业或组织中,则不可能或不建议在笔记本电脑上运行测试。想象一下您自己在凌晨 2:00 在笔记本电脑上运行工作中的所有 Web 应用程序的测试:s。另一方面,想象您的持续集成服务器在凌晨 2:00 运行数十个测试,并向您发送一个包含结果的漂亮仪表板。

你的问题

我在 Windows 上开发这个,而 docker 镜像使用 Linux,这可能是一个问题吗?

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

我很迷失。有什么替代方法可以让这个工作吗?也许另一个泊坞窗图像?

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

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

因为您的测试代码执行视觉测试,这需要一台具有视觉浏览器及其各自的硒驱动程序的机器。


我必须做什么才能让它发挥作用?

www.browserstack.com

总而言之,browserstack 为您提供了一个带有大量桌面和 Android 浏览器的 selenium 服务器。只需几行代码,您的测试将在 browserstack 云中运行,您将拥有一个仪表板,其中包含结果和视频作为错误证明。

这里有一些替代方案: https: //alternative.me/browserstack

实现你自己的selenium服务器

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

无头浏览器

如果你没有机器或者 browserstack 不适合你,你可以研究一下:Headless Browser

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

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

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

这里有一些选项: