diff --git a/spec-main/fixtures/apps/open-new-window-from-link/index.html b/spec-main/fixtures/apps/open-new-window-from-link/index.html
new file mode 100644
index 0000000000000..b7584564e0010
--- /dev/null
+++ b/spec-main/fixtures/apps/open-new-window-from-link/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ Hello World!
+
+
+ Open New Window
+
+
diff --git a/spec-main/fixtures/apps/open-new-window-from-link/main.js b/spec-main/fixtures/apps/open-new-window-from-link/main.js
new file mode 100644
index 0000000000000..7d41b3bb29ee5
--- /dev/null
+++ b/spec-main/fixtures/apps/open-new-window-from-link/main.js
@@ -0,0 +1,64 @@
+const { app, BrowserWindow } = require('electron');
+const path = require('path');
+
+async function createWindow () {
+ const mainWindow = new BrowserWindow({
+ width: 800,
+ height: 600,
+ x: 100,
+ y: 100,
+ webPreferences: {
+ preload: path.join(__dirname, 'preload.js'),
+ contextIsolation: false,
+ nodeIntegration: true
+ }
+ });
+
+ await mainWindow.loadFile('index.html');
+
+ const rect = await mainWindow.webContents.executeJavaScript('JSON.parse(JSON.stringify(document.querySelector("a").getBoundingClientRect()))');
+ const x = rect.x + rect.width / 2;
+ const y = rect.y + rect.height / 2;
+
+ function click (x, y, options) {
+ x = Math.floor(x);
+ y = Math.floor(y);
+ mainWindow.webContents.sendInputEvent({
+ type: 'mouseDown',
+ button: 'left',
+ x,
+ y,
+ clickCount: 1,
+ ...options
+ });
+
+ mainWindow.webContents.sendInputEvent({
+ type: 'mouseUp',
+ button: 'left',
+ x,
+ y,
+ clickCount: 1,
+ ...options
+ });
+ }
+
+ click(x, y, { modifiers: ['shift'] });
+}
+
+app.whenReady().then(() => {
+ app.on('web-contents-created', (e, wc) => {
+ wc.on('render-process-gone', (e, details) => {
+ console.error(details);
+ process.exit(1);
+ });
+
+ wc.on('did-finish-load', () => {
+ const title = wc.getTitle();
+ if (title === 'Window From Link') {
+ process.exit(0);
+ }
+ });
+ });
+
+ createWindow();
+});
diff --git a/spec-main/fixtures/apps/open-new-window-from-link/new-window-page.html b/spec-main/fixtures/apps/open-new-window-from-link/new-window-page.html
new file mode 100644
index 0000000000000..ac919774f3b27
--- /dev/null
+++ b/spec-main/fixtures/apps/open-new-window-from-link/new-window-page.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ Window From Link
+
+
+ I'm a window opened from a link!
+
+
diff --git a/spec-main/fixtures/apps/open-new-window-from-link/package.json b/spec-main/fixtures/apps/open-new-window-from-link/package.json
new file mode 100644
index 0000000000000..ff9319a62ae99
--- /dev/null
+++ b/spec-main/fixtures/apps/open-new-window-from-link/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "electron-test-open-new-window-from-link",
+ "main": "main.js"
+}
diff --git a/spec-main/fixtures/apps/open-new-window-from-link/preload.js b/spec-main/fixtures/apps/open-new-window-from-link/preload.js
new file mode 100644
index 0000000000000..edb91c4291072
--- /dev/null
+++ b/spec-main/fixtures/apps/open-new-window-from-link/preload.js
@@ -0,0 +1,3 @@
+window.addEventListener('click', e => {
+ console.log('click', e);
+});