问题标签 [spectron]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
564 浏览

electron - 如何使用 Mocha 测试需要 Node API 的自定义模块?“无法读取未定义的属性‘要求’”

我正在构建一个电子应用程序。我正在使用 Mocha 和 Spectron 进行测试。摩卡在线出错

具体来说,当我尝试要求节点的 fs 模块时,它在第 2 行的文件浏览器模块中失败:

我想这与 Electron 中的 Main 进程/Renderer 进程范围有关,但我不明白如何使它与 Mocha 一起正常工作。当 Mocha 测试文件依赖于我通常通过电子远程模块访问的 Node api 时,如何正确地在 Mocha 测试文件中要求我的模块?

test/test.js(这是来自他们的 github 页面的 spectron 示例代码)。我通过 package.json 脚本(npm 测试)使用“mocha”命令运行它。请注意,我什至还没有为我的文件浏览器模块编写测试,它在 require 语句上失败了。

src/文件浏览器.js

0 投票
0 回答
608 浏览

selenium-webdriver - 使用 Spectron 点击

我已将两个tr元素渲染到浏览器窗口上。我想点击第二个。基于 webdriver 文档,我认为代码如下(使用 ava):

但这会产生以下错误:

查看其他一些堆栈帖子,您可以通过它的 xPath 单击选择器:

这确实有效,但我更喜欢第一种方法,即您使用选择器选择一个元素,然后click在其上调用该方法。这可能吗?

0 投票
1 回答
137 浏览

angular - 带前缀的测试时间输入字段

我有一个带时间输入字段的表单

在此处输入图像描述

输入字段如下所示:

我想测试表格。我用

await this.app.client.setValue(//*[@id="p-at-tt-time-input"]/div/div/div 1 /input, '12:30');

但我得到 invalid element state: Element must be user-editable in order to clear it.错误

0 投票
0 回答
161 浏览

electron - this.app.client.electron.remote.app.getApplicationMenu() 返回 undefined

我正在为具有自定义菜单的 Electron 应用程序设置 e2e 测试。我想测试这些自定义菜单。我尝试了几种从 Spectron 的应用程序客户端访问“getApplicationMenu()”的方法。但它们都返回“未定义”。

0 投票
1 回答
54 浏览

mocha.js - 创建 mocha 测试套件以启动应用程序一次

我有以下文件

我想在前后统一开始测试,以便我只启动一次应用程序并运行测试并在那之后关闭它

每个测试文件都有自己的描述

0 投票
1 回答
597 浏览

cucumber - 将测试结果导入jira进行黄瓜测试

我有 Spectron 项目,它作为 result.xml 文件输出到 junit 报告器。我想将测试结果作为测试执行导入到 Jira Ticket 中的相应测试中。一些 Jira 测试是手动的,而另一些是黄瓜测试。

我的 result.xml 的内容是:

首先,在运行我的测试之后,我使用以下模板创建了一个测试执行

然后,我尝试将 result.xml 导入到我已经创建的已创建测试执行票据中,当导入手动测试的结果时,将创建新票据,因为需要一个通用定义字段,这只会发生一次(不知何故我可以忍受它)

我的问题 :

  1. 我不知道如何导入测试结果并将测试执行链接到 Cucumber-Jira 票证。

  2. 我渴望的是手动运行的黄瓜测试和自动运行的测试显示指向 Jira 中相同黄瓜测试的链接。

  3. 我找不到 mocha 的黄瓜记者,它以一种格式输出,黄瓜很舒服。

0 投票
1 回答
515 浏览

reactjs - 如何使用 Spectron 选择 React 组件?

我正在使用 Spectron 测试基于 React 的 Electron 应用程序。我想选择一个 React 组件,我正在尝试访问 WebDriverIO 的浏览器并调用它react$,但是找不到该函数 - “app.client.react$ 不是函数”。

这是我的代码(使用 AVA):

这是错误:

有任何想法吗?

0 投票
1 回答
921 浏览

typescript - 对 Spectron 中的 ipcMain 事件作出反应

我有一个电子应用程序,它首先启动一个启动器窗口(在渲染器进程中),它启动多个后台服务。在这些后台服务成功启动后,它会将"services-running"其发送ipcRenderer回主进程,而主进程又会通过关闭启动器窗口并启动主应用程序窗口来对该事件做出反应。该事件当然是由ipcMain.on('services-running',...)

我分别对所有处理程序进行了单元测试,所以这些都很好,现在我想集成测试通过的事件ipcMain

这就是我的集成测试目前的样子:

第一个测试工作正常。第二次测试最终会在超时后失败,虽然我可以subscribed在主窗口弹出之前在 shell 上看到,所以肯定会触发事件。

我阅读了nodeIntegration需要启用才能使用 spectron 访问完整电子 api 的文档,我所有的渲染器进程都是{nodeIntegration: true}在它们各自的webPreferences. 但是由于我对主进程感兴趣,我认为这不适用(或者至少我认为它不应该,因为主进程本身就是一个节点进程)。

所以我的主要问题是,我将如何绑定ipcMain事件并将其包含在我的断言中。另外我怎么知道启动器窗口何时关闭并且“主”窗口已打开?

作为奖励,我对 spectron api 有一些理解问题。

  1. 如果我查看isspectron.d.tselectron属性,它又是 a并且直接具有该属性。所以在我的理解中访问应该是(这是未定义的),远程来自哪里以及为什么它在.ApplicationElectron.AllElectronMainInterfaceipcMainipcMainapp.electron.ipcMainspectron.d.ts

  2. SpectronClient所有返回的方法Promise<void>。所以我必须awaitthen那些。如果我查看 javascript 示例,它们会链接客户端语句:

这在打字稿中不起作用,因为您不能Promise<void>明显地链接到...在 js 中如何工作?

0 投票
1 回答
243 浏览

node.js - 使用 travis 构建和测试电子

我有一个带有光谱测试的电子项目。我使用 travis 通过电子构建器为每个主要操作系统构建。现在,我还想在 travis 中运行测试,所以我更新了我的 .travis.yml 文件以在 linux 上运行测试(用于无头测试)并在 osx 上构建。这有效,但只有 osx 上的构建部分有效,而测试失败。

这是我最后一次尝试 travis config

没有任何有价值的信息就失败了

在此处输入图像描述

我也试过这个 travis 配置

那个失败是因为 10 分钟后超时。所以我不知道这是怎么回事。如何在 travis 中测试我的电子应用程序,同时保持在 osx 上的构建?我的 travis 配置有什么问题吗?

PD:这是我的项目的仓库

0 投票
2 回答
688 浏览

typescript - Spectron app.client.close() 不会触发 on('close' 事件

我有一个多窗口电子应用程序,即它由一个启动器窗口和一个主窗口组成。

主进程负责首先显示启动器,在一切初始化后,它通过 ipc 获取一个事件并显示主窗口,隐藏启动器。

on('close')在主窗口上使用来检测用户何时关闭主窗口,再次显示启动器并执行一些拆卸逻辑,完成后应用程序退出。

这很好用,现在我想用 Spectron 集成测试这种行为。我在向窗口发送关闭信号时遇到问题,模拟用户单击关闭。

我已经验证索引为 1 的窗口是主窗口。当我调用app.client.close();主窗口关闭时,但我可以在日志中看到on('close', )主窗口的事件没有被触发,因此它不会跳回启动器。

我有什么遗漏/误解吗?