Comments (12)
See #94 for a somewhat graceful way of mocking dialogs for the moment.
from spectron.
Same issue with dialog.showMessageBox
from spectron.
There is also spectron-dialog-addon which is a newer fork of spectron-fake-dialog but it only supports electron up to 6 and I am on electron 9 and I didn't get it to work.
from spectron.
Any ideas?
I don't think dialogs can be tested well yet via ChromeDriver and Spectron. Will look into this further.
from spectron.
Also encountered this. Got around it with a super-simple mock version of dialog
that is used when the application is started with a test ENV. It works ok but it's very messy.
from spectron.
I guess we can't just use the webdriver alert accept/dismiss functionality? http://webdriver.io/api/protocol/alertAccept.html
from spectron.
it doesn't look like that works, but seems like I can use robotjs to send keypresses that are intercepted by the dialog so that I can hit enter and close the dialog etc., which is at least part of the job done I guess ...
from spectron.
issue is still there as discussed with webdriverio community #236
from spectron.
This node package spectron-fake-dialog implements a technique that I thought worked pretty well https://www.npmjs.com/package/spectron-fake-dialog
from spectron.
Hi - are we now able to use the real dialog object instead of the mock?
from spectron.
Don't think so. I've been trying for the last couple of days but can't seem to find a way to mock dialogs.
from spectron.
Darn - here's a snippet of my code on how I'm mocking for now. I can probably clean this up, but it does the job for now. Basically it uses the NODE_ENV to decide to inject a mock dialog or not.
import path from "path"
import { Dialog, OpenDialogOptions, OpenDialogReturnValue } from "electron"
export const dialogMock: Dialog = {
showOpenDialog: (options: OpenDialogOptions) => {
const openDialogReturnValue: OpenDialogReturnValue = {
canceled: false,
filePaths: [
path.join(__dirname, "..", process.env.E2E_TEST_FOLDER),
],
}
return Promise.resolve(openDialogReturnValue)
},
} as any
import { onSelectFolderStart as _onSelectFolderStart } from "./integration/openDialog"
import { dialog, IpcMainEvent } from "electron"
import { dialogMock } from "../../../e2e/dialogMock"
// need to use mocked dialog (set from e2e test file) for spectron testing due to limitations of not being able to interact with OS dialogs
const dialogModule = process.env.NODE_ENV === "spectron" ? dialogMock : dialog
export const onSelectFolderStart = ((dialog) => (event: IpcMainEvent) =>
_onSelectFolderStart(dialog, event))(dialogModule)
And then I run my test using:
npm run NODE_ENV=spectron E2E_TEST_FOLDER=e2e-temp jest --config=jest.config.e2e.js
There's also the https://github.com/joe-re/spectron-fake-dialog though it didn't work with my code (maybe because of my factory function).
from spectron.
Related Issues (20)
- Element Wasn't Found After Upgrading my Spectron Version to 15 & Electron to 13 HOT 1
- Please release Spectron 16, compatible with electron 14 HOT 8
- api http mocking
- Module name "process" has not been loaded yet for context:
- This version of ChromeDriver only supports Chrome version 91 HOT 1
- failing to successfully launch Spectron headless in Docker on Jenkins
- Spectron test table contents
- export interface SpectronClient extends WebdriverIO.BrowserObject HOT 1
- test suddenly failing on Github Action Windows
- Support Electron 15
- is it possible to work with selenium grid using the image
- ChromeDriver / Chrome version mismatch HOT 2
- app.stop() not work, electron process stay in the background after the mocha test program exits HOT 2
- Rewrite Discussion HOT 12
- Spectron: Deprecation Announcement HOT 10
- This version of ChromeDriver only supports Chrome version HOT 1
- TypeError: waitUntilWindowLoaded Cannot read property 'isLoading' of undefined HOT 5
- --
- unknown error: call function result missing int 'status' HOT 6
- มานะแมน (2024) ดู-หนัง เรื่องเต็ม - ดู มานะแมนเรื่องเต็ม Mana Man หนังไทยย่อยฟรี
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spectron.