无法为 Salesforce 运行 Lightning 测试服务 (LTS)

Posted

技术标签:

【中文标题】无法为 Salesforce 运行 Lightning 测试服务 (LTS)【英文标题】:Can't run Lightning Testing Service (LTS) for Salesforce 【发布时间】:2019-05-22 21:01:53 【问题描述】:

一段时间以来,我一直在使用 SFDX 通过 Teamcity 自动化 Salesforce 开发。 SFDX 并不总是提供最好的错误消息,但文档通常很有帮助。好吧,或者我是这么想的,直到我开始使用 LTS。这是安装 LTS 的文档 - https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/lightning_testing_install.htm。我已阅读文档并按照说明操作,但我无法让 LTS 为我工作。我能够创建一个临时组织并安装 LTS,但我无法运行测试。

sfdx force:lightning:test:run -a jasmineTests.app 以下命令允许您运行示例 Jasmin 测试。每当我尝试该命令时,我都会收到以下错误: ERROR running force:lightning:test:run: Unable to connect to selenium。在文档中,它没有指定需要 selenium 的服务器。

虽然文档没有提及硒,但我已经尝试下载 selenium-standalone-chrome。我尝试将 selenium/standalone-chrome 作为 docker 容器运行。但它不起作用。

尝试的链接: https://github.com/forcedotcom/LightningTestingService/issues/46 https://github.com/forcedotcom/LightningTestingService/issues/46#issuecomment-457829523 https://github.com/forcedotcom/LightningTestingService/issues/46#issuecomment-347928851

请帮忙,我已经尝试了几乎所有方法。

【问题讨论】:

我让它工作了!事实证明,我上面分享的链接毕竟是有帮助的......链接:github.com/forcedotcom/LightningTestingService/issues/… 我还必须添加一个变量SELENIUM_REMOTE_URL=http://selenium:4444/wd/hub/ 并创建一个 docker-compose.yml 来启动 selenium/standalone-chrome:latest @ 987654329@ 【参考方案1】:

您确实需要容器环境中可用的 Selenium 及其相关依赖项(浏览器等)。不幸的是,我不相信任何官方图像或依赖列表可用(当然,具体的包名称会因发行版而异)。我可以告诉你,我已经成功使用 circleci/openjdk:latest-node-browsers 图像在持续集成中执行 LTS 测试。

我在 GitHub 上有一个 Salesforce CI 示例存储库,其中一个是 LTS 测试的工作 demo。缩写形式是这样的。

version: 2
jobs:
  build:
    docker:
        - image: circleci/openjdk:latest-node-browsers
    steps:
        - checkout
        - restore_cache:
            keys:
                - sfdx
        - run:
            name: Install Salesforce DX
            command: |
                if [ ! -d node_modules/sfdx-cli ]; then
                    export SFDX_AUTOUPDATE_DISABLE=true
                    export SFDX_USE_GENERIC_UNIX_KEYCHAIN=true
                    export SFDX_DOMAIN_RETRY=300
                    npm install sfdx-cli
                    node_modules/sfdx-cli/bin/run --version
                    node_modules/sfdx-cli/bin/run plugins --core
                fi
        - save_cache:
            key: sfdx
            paths: 
                - node_modules
        - run: 
            name: Create Scratch Org
            command: |
                openssl aes-256-cbc -k $KEY -in assets/server.key.enc -out assets/server.key -d -md md5
                node_modules/sfdx-cli/bin/run force:auth:jwt:grant --clientid $CONSUMERKEY --jwtkeyfile assets/server.key --username $USERNAME --setdefaultdevhubusername -a DevHub
                node_modules/sfdx-cli/bin/run force:org:create -v DevHub -s -f config/project-scratch-def.json -a scratch
        - run:
            name: Remove Server Key
            when: always
            command: |
                rm assets/server.key
        - run:
            name: Install Lightning Testing Service
            command: |
                node_modules/sfdx-cli/bin/run force:lightning:test:install -t jasmine
        - run: 
            name: Push Source
            command: |
                node_modules/sfdx-cli/bin/run force:source:push -u scratch
        - run:
            name: Run Lightning Tests
            command: | 
                mkdir ~/tests/lightning
                node_modules/sfdx-cli/bin/run force:lightning:test:run -d ~/tests/lightning -r human -a lightningTests.app -o

【讨论】:

感谢您回复大卫。在我之前的 Docker 映像中,我已经有一个 Chrome 驱动程序。无论如何,我尝试创建一个图像,就像来自circleci/openjdk:latest-node-browsers 的图像一样,但是我仍然收到Unable to connect to selenium 错误。我在想我的 LTS 配置 JSON 设置不正确。你是如何设置 LTS 配置的? @M.Firmino 您是指 LTS 套件的驱动程序 .app 吗? 不,我的意思是配置文件...他们在 LTS 存储库中有一个示例。 https://github.com/forcedotcom/LightningTestingService/blob/master/config/lts-config.json...我认为这是执行命令所必需的。我正在使用确切的配置作为这个文件,我得到了错误——ERROR running force:lightning:test:run: v1.indexOf is not a function @M.Firmino 我根本没有——有可能是在我停止使用 LTS 之后添加的。很抱歉,这不是很有帮助!当我有时间时,我会再次尝试我的构建,看看它们是否仍然有效。【参考方案2】:

更新答案以防有人遇到此问题... 我让它工作了!事实证明,我上面分享的链接毕竟是有帮助的 LINK:https://github.com/forcedotcom/LightningTestingService/issues/46

    我必须将变量 SELENIUM_REMOTE_URL=http://selenium:4444/wd/hub/ 添加到 TeamCity 并创建一个docker-compose.yml来启动selenium/standalone-chrome:latest
version: "3"
services:
  selenium:
    image: selenium/standalone-chrome:latest
    ports:
      - "4444:4444"

【讨论】:

以上是关于无法为 Salesforce 运行 Lightning 测试服务 (LTS)的主要内容,如果未能解决你的问题,请参考以下文章

在Salesforce中设置

Salesforce Analytics API runningUser

无法从 Mule Salesforce 获取访问令牌

无法登录沙箱Salesforce系统 - 错误:检查SAML断言中的无效断言

Salesforce.com:用户无法编辑他添加到他不拥有的帐户的注释

无法找到元素,这是在salesforce闪电中删除对象