diff --git a/spectron/fixtures/robot-actions.ts b/spectron/fixtures/robot-actions.ts index 0f386ccb..56e373f1 100644 --- a/spectron/fixtures/robot-actions.ts +++ b/spectron/fixtures/robot-actions.ts @@ -26,6 +26,33 @@ class RobotActions { robot.keyToggle('f', 'up', [ 'command', 'control' ]); } + /** + * Zoom in via keyboard Command/Ctrl + + */ + public zoomIn(): void { + const modifier = isMac ? [ 'command' ] : [ 'control' ]; + robot.keyToggle('+', 'down', modifier); + robot.keyToggle('+', 'up', modifier); + } + + /** + * Zoom out via keyboard + */ + public zoomOut(): void { + const modifier = isMac ? [ 'command' ] : [ 'control' ]; + robot.keyToggle('-', 'down', modifier); + robot.keyToggle('-', 'up', modifier); + } + + /** + * Zoom reset via keyboard + */ + public zoomReset(): void { + const modifier = isMac ? [ 'command' ] : [ 'control' ]; + robot.keyToggle('0', 'down', modifier); + robot.keyToggle('0', 'up', modifier); + } + /** * Click the App menu */ diff --git a/spectron/zoom.spec.ts b/spectron/zoom.spec.ts new file mode 100644 index 00000000..b199c8a0 --- /dev/null +++ b/spectron/zoom.spec.ts @@ -0,0 +1,42 @@ +import test from 'ava'; +import { Application } from 'spectron'; +import { robotActions } from './fixtures/robot-actions'; + +import { + getDemoFilePath, loadURL, + sleep, + startApplication, + stopApplication, + Timeouts, +} from './fixtures/spectron-setup'; + +let app; + +test.before(async (t) => { + app = await startApplication() as Application; + t.true(app.isRunning()); +}); + +test.after.always(async () => { + await stopApplication(app); +}); + +test('zoom: verify application zoom feature', async (t) => { + await loadURL(app, getDemoFilePath()); + await app.client.waitUntilWindowLoaded(Timeouts.fiveSec); + + robotActions.zoomIn(); + t.is(await app.webContents.getZoomLevel(), 0.5); + await sleep(Timeouts.oneSec); + + robotActions.zoomIn(); + t.is(await app.webContents.getZoomLevel(), 1); + await sleep(Timeouts.oneSec); + + robotActions.zoomOut(); + t.is(await app.webContents.getZoomLevel(), 0.5); + await sleep(Timeouts.oneSec); + + robotActions.zoomReset(); + t.is(await app.webContents.getZoomLevel(), 0); +});