在CI服务器上调试Firefox

在CI服务器上调试Firefox,firefox,travis-ci,Firefox,Travis Ci,我在Travis CI上构建我的项目。我以以下方式运行测试: 使用index.html参数运行Firefox,该参数加载尝试重复连接到websocket服务器的脚本 运行向Firefox发送命令的简单websocket服务器 Firefox中的脚本读取这些命令(它们可能包含一些要测试的JavaScript代码),执行JavaScript代码 当我在本地运行东西时,这就起作用了。这在几周前也曾在特拉维斯身上起过作用。然而,工作了多年的东西却意外地坏了。Firefox没有报告任何错误,但node.j

我在Travis CI上构建我的项目。我以以下方式运行测试:

  • 使用
    index.html
    参数运行Firefox,该参数加载尝试重复连接到websocket服务器的脚本
  • 运行向Firefox发送命令的简单websocket服务器
  • Firefox中的脚本读取这些命令(它们可能包含一些要测试的JavaScript代码),执行JavaScript代码
  • 当我在本地运行东西时,这就起作用了。这在几周前也曾在特拉维斯身上起过作用。然而,工作了多年的东西却意外地坏了。Firefox没有报告任何错误,但node.js服务器在一段时间内没有接收到传入连接。我不知道如何调试这个问题。在Firefox中运行的脚本广泛使用
    console.log
    ,但我无法从Travis检索这些日志。有没有办法从运行在CI服务器上的Firefox获取一些信息

    注意:我运行Firefox53。事情坏了之后,我尝试升级到最新版本。此外,在运行Firefox之前,我还经常运行以下命令:

    export DISPLAY=:99.0
    sh -e /etc/init.d/xvfb start
    sleep 10
    
    我试着去掉这些线,更多地使用无头,但是这不起作用

    在Firefox中运行的脚本广泛使用
    console.log
    ,但我无法从Travis检索这些日志。有没有办法从运行在CI服务器上的Firefox获取一些信息

    Firefox 65+支持一个新的
    devtools.console.stdout.content
    about:config首选项,您可以将其设置为
    true
    ,使控制台输出转储到stdout(我相信它会出现在Travis中)

    对于早期版本,似乎没有一个好的解决方案:,和

    您似乎以文件的形式运行
    index.html
    :///URL,-我建议您花些时间设置一个本地https://服务器,以节省时间调试浏览器为非https内容添加的不断增加的“安全”限制


    如果上述方法没有帮助,可以尝试在一个单独的回购协议中用最小的测试用例来复制它;如果问题仍然存在,您可以在另一个问题中共享该回购。

    您可以使用
    xvfb
    运行
    vnc
    ,并使用
    vncviewer
    连接到它。这里有更多详细信息:

    “关于:配置首选项”-如何设置?我没有访问Firefox GUI的权限,它是CI服务器。检查Ok,我给了你奖励,但仍然无法使事情正常进行。您提供的首选项文档链接没有帮助。我假设我知道firefox安装的位置或配置文件。然而,看起来似乎没有办法从命令行创建配置文件,比如Chrome,它在命令行中获取配置文件目录的路径,并在给定路径下自动创建配置文件;mkdir./my profile&&echo“user_pref('a.b.c',123);”>。/my profile/user.js&&/Applications/Firefox.app/Contents/MacOS/Firefox-bin-profilepwd
    /my profile-no remote
    (显然,您必须知道Firefox二进制文件的位置或将其放在路径中才能运行它。)//上面的命令应该是
    -profile`pwd`/my profile
    ,即profile目录的绝对路径。