在无头的Firefox浏览器中运行karma测试不能在Jenkins上运行

时间:2017-10-16 21:37:52

标签: firefox jenkins karma-runner opensuse headless-browser

第一次询问关于SO的问题。请善待。我会慷慨地接受问题反馈。

我在openSUSE Linux机器上运行了一个Jenkins实例,我没有root访问权限。我已经为Jenkins配置了一个自定义工具安装,它可以从https://ftp.mozilla.org/pub/firefox/releases/56.0.1/linux-x86_64/en-US/firefox-56.0.1.tar.bz2

中获取Firefox 56.0.1

我有一个基于Angular CLI构建的Angular应用程序。这是我的karma.conf.js的相关部分:

browsers: ['FirefoxHeadless'],
singleRun: true,
customLaunchers: {
  'FirefoxHeadless': {
    base: 'Firefox',
    flags: [
      '-headless',
    ],
  }

我的Jenkins有一个工作,可以使用带有ng test标志的Firefox 56.0.1获取Angular应用程序并运行-headless。但是,它失败了以下反馈:

ERROR [launcher]: [39mCannot start Firefox

(process:3050): GLib-CRITICAL **: g_slice_set_config: assertion 
'sys_page_size == 0' failed
Error: no display specified

对此错误的研究表明需要为Selenium运行xvfb并设置DISPLAY环境变量,以便Firefox可以连接到该显示。由于这应该是无头的,我不相信xvfb应该是必需的,因为无头运行不应该需要图形显示(我不想完成尝试在我没有root的机器上安装xvfb的工作进入)。添加DISPLAY环境变量只会将错误更改为cannot open display: :10

如何让我的jenkins实例在无头版Firefox中运行karma测试?

1 个答案:

答案 0 :(得分:1)

在搜索为什么Firefox作为浏览器在Windows上可以运行但在我的非GUI linux构建服务器上不能运行时,遇到了您的答案。看到您为自定义浏览器启动配置FirefoxHeadless命名后,我记得以前听说过这样的预设: Firefox launcher for Karma支持一些现成的启动配置 它将使用正确的启动选项启动Firefox:

Firefox
FirefoxHeadless
FirefoxDeveloper
FirefoxDeveloperHeadless
FirefoxAurora
FirefoxAuroraHeadless
FirefoxNightly
FirefoxNightlyHeadless

可通过NPM获得该软件包。使用此功能可能会为您和其他人省去其他启动配置的麻烦。