Giter Site home page Giter Site logo

Comments (12)

davej avatar davej commented on August 27, 2024 3

See #94 for a somewhat graceful way of mocking dialogs for the moment.

from spectron.

remss avatar remss commented on August 27, 2024 2

Same issue with dialog.showMessageBox

from spectron.

danielroehrig avatar danielroehrig commented on August 27, 2024 2

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.

kevinsawicki avatar kevinsawicki commented on August 27, 2024

Any ideas?

I don't think dialogs can be tested well yet via ChromeDriver and Spectron. Will look into this further.

from spectron.

davej avatar davej commented on August 27, 2024

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.

tansaku avatar tansaku commented on August 27, 2024

I guess we can't just use the webdriver alert accept/dismiss functionality? http://webdriver.io/api/protocol/alertAccept.html

from spectron.

tansaku avatar tansaku commented on August 27, 2024

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.

myfrndjk avatar myfrndjk commented on August 27, 2024

issue is still there as discussed with webdriverio community #236

screen shot 2017-10-05 at 1 55 25 pm

from spectron.

cmdcolin avatar cmdcolin commented on August 27, 2024

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.

talhaguy avatar talhaguy commented on August 27, 2024

Hi - are we now able to use the real dialog object instead of the mock?

from spectron.

danielroehrig avatar danielroehrig commented on August 27, 2024

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.

talhaguy avatar talhaguy commented on August 27, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.