【问题标题】:TeamCity configuration for BrowserStack testsBrowserStack 测试的 TeamCity 配置
【发布时间】:2026-01-22 09:45:01
【问题描述】:

在 TeamCity 中,我正在设置“命令行”运行器类型。我的目标是在窗口中运行命令行脚本并让它运行。然后转到下一个构建步骤,而不关闭在上一步中打开的命令行窗口。在我的最后一个构建步骤中,我想关闭在初始构建步骤期间仍然打开的命令行窗口。

以上场景基于我在配置“BrowserStack”测试项目时的构建步骤。我想在我的“命令行”运行器类型步骤中执行 BrowserStackLocal.cmd 并让它运行。然后转到我拥有的下一个构建步骤我所有的测试。最后在最后一个构建步骤中,我想在完成测试后关闭命令行窗口。

目前构建步骤不知道在执行 'start BrowserStackLocal.exe -force' 后要做什么,因为它将等待回复代码。

关于如何进入下一个构建步骤的任何想法?

【问题讨论】:

    标签: teamcity browserstack


    【解决方案1】:

    正如 Alina 所指出的,您需要设置一个“命令行”构建步骤,以便在运行测试之前在后台启动 BrowserStackLocal。配置可以是:

    Runner Type = Command Line
    Run = Custom Script
    Using 'advanced options' set Working directory where BrowserStackLocal is present if it differs from the checkout directory.
    

    自定义脚本示例:

    • 适用于 Linux/Mac

          #!/bin/bash
      
          ./BrowserStackLocal <BrowserStack Key> -force &
      
    • 对于 Windows

          start /B BrowserStackLocal.exe <BrowserStack Key> -force 
      

    您可以先等待BrowserStackLocal 进程启动,然后再转到 Team City 项目的下一个构建步骤。此外,您可以设置构建后操作来终止正在运行的 BrowserStackLocal 进程。

    【讨论】:

    • 你是对的 9ikhan。我们以同样的方式实施。这里的挑战是,TeamCity 构建步骤在执行 'start BrowserStackLocal.exe -force' 后不知道该做什么,因为它将等待回复代码。当 BrowserStackLocal 正在运行时,它将永远无法跳转到 TESTS 中执行。
    • 你可以试试这个:start /B BrowserStackLocal.exe &lt;BrowserStack Key&gt; -force &gt; output.txt 吗?我已经在 Windows 机器上验证了这一点,它确实在后台运行进程并且是非阻塞的。参考:superuser.com/a/591084
    • @VRVRKrishnan - 如果此解决方案有效,请接受答案或让我知道您是否需要更多信息。
    【解决方案2】:

    最近遇到了同样的问题,将二进制文件作为守护进程启动将继续到下一个构建步骤。

    打开连接:

    browserstacklocal.exe --key %system.BrowserStackKey% --local-identifier %system.BrowserStackLocalIdentifier% --force --daemon start
    

    关闭连接:

    browserstacklocal.exe --local-identifier %system.BrowserStackLocalIdentifier% --daemon stop
    

    【讨论】:

      【解决方案3】:

      您只需按ALTTAB

      【讨论】:

      • 原始问题中的挑战是,跳转到 TeamCity 中的下一个构建步骤。
      【解决方案4】:

      如果“BrowserStack”有适当的启停命令,那么您可以使用它们(例如 Tomcat)。如果没有,那么您可以在background 中启动'BrowserStack',然后运行测试,然后使用以下command option 将其终止: -force - kill other running instances of BrowserStack Local

      【讨论】:

      • 您好阿丽娜,感谢您的回复。这里的问题主要围绕 TeamCity (CI) 配置。需要知道在启动“CommandLine”运行器类型构建步骤后如何跳转到 TeamCity 中的另一个构建步骤。
      • 无法在 TeamCity 中运行并行构建步骤,请参阅相关的 feature request。我建议您在第一个命令行构建步骤中在后台启动 BrowserStack。一旦它开始第二个构建步骤开始执行 - 运行测试并在第三个构建步骤中杀死 BrowserStack 进程。
      • 在 TeamCity 中,直到第一步完成/失败后才会开始第二个构建步骤(不退出第一步就无法开始第二个构建步骤)。一旦我们将 BrowserStack 作为 TeamCity 构建步骤 1 的一部分运行,它将永远运行。临时解决方案是:在后台手动运行 BrowserStack,并从 TeamCity 构建步骤中删除相应的步骤。