在电子中使用量角器

Yan*_*ong 5 testing angularjs protractor electron

我正在尝试为使用Protractor的Electron运行的应用程序设置单元测试和e2e测试.我一直在推荐许多不同的帖子(这个确实有帮助),但我仍然得到一个我不明白的错误:

Message:
  Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
Stacktrace:
  undefined
Run Code Online (Sandbox Code Playgroud)

我的conf.js文件如下所示:

exports.config = {
    directConnect : true,
    seleniumAddress: 'http://localhost:4444/wd/hub',
    baseUrl:"file://home/me/workspace/testing-project/main.js",
    capabilities: {
        browserName: "chrome",
        chromeOptions: {
            binary: "/home/me/.linuxbrew/lib/node_modules/electron-prebuilt/dist/electron",
            args: ["--test-type=webdriver"]
        }
    },
    specs: ['todo-specs.js'],
    onPrepare: function(){
        browser.resetUrl = "file://";
        browser.driver.get("file://");
    }
};
Run Code Online (Sandbox Code Playgroud)

考虑到量角器网站上提供的文档,我的印象是我不需要安装任何其他东西(例如Jasmine).
让我感到惊讶的是,尽管main.js的路径(根据Electron的规格启动应用程序)是正确的,但我看不到弹出的Electron窗口中的任何内容.
你们有没有遇到过这个问题?你有设法解决它吗?

Yan*_*ong 4

显然,使用电子二进制文件不足以实际启动您的应用程序。但是,通过为您的应用程序构建二进制文件并将其链接到您的conf.js文件中,就可以了。
我已经能够将我的文件减少为:
conf.js

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['test-spec.js'],
    capabilities: {
        browserName: "chrome",
        chromeOptions: {
            binary: "./dist/myAwesomeApp/myAwesomeAppBinary"
        }
    },
    onPrepare: function () {
        browser.resetUrl = "file://";
    }
};
Run Code Online (Sandbox Code Playgroud)

通过这种方式,无需在 Electron 中描述baseUrl或使用browser.get()browser.driver.get()启动应用程序。
但是,我宁愿不必构建应用程序二进制文件,但我认为现在不可能。