From 41a6e631b4d1c9f2e7a77936b69d39945a087d6b Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 13:24:10 +0000 Subject: [PATCH 1/8] Test abort from renderer --- .../native-sentry/renderer-abort/event.json | 75 +++++++++++++++++++ .../native-sentry/renderer-abort/package.json | 9 +++ .../native-sentry/renderer-abort/recipe.yml | 4 + .../renderer-abort/src/index.html | 20 +++++ .../native-sentry/renderer-abort/src/main.js | 23 ++++++ 5 files changed, 131 insertions(+) create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/event.json create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/package.json create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/src/index.html create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/src/main.js diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/event.json b/test/e2e/test-apps/native-sentry/renderer-abort/event.json new file mode 100644 index 00000000..d78dcc12 --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/event.json @@ -0,0 +1,75 @@ +{ + "method": "envelope", + "sentryKey": "37f8a2ee37c0409d8970bc7559c7c7e4", + "appId": "277345", + "data": { + "sdk": { + "name": "sentry.javascript.electron", + "packages": [ + { + "name": "npm:@sentry/electron", + "version": "{{version}}" + } + ], + "version": "{{version}}" + }, + "contexts": { + "app": { + "app_name": "native-sentry-renderer-abort", + "app_version": "1.0.0", + "app_start_time": "{{time}}" + }, + "browser": { + "name": "Chrome" + }, + "chrome": { + "name": "Chrome", + "type": "runtime", + "version": "{{version}}" + }, + "device": { + "arch": "{{arch}}", + "family": "Desktop", + "memory_size": 0, + "free_memory": 0, + "processor_count": 0, + "processor_frequency": 0, + "cpu_description": "{{cpu}}", + "screen_resolution":"{{screen}}", + "screen_density": 1, + "language": "{{language}}" + }, + "node": { + "name": "Node", + "type": "runtime", + "version": "{{version}}" + }, + "os": { + "name": "{{platform}}", + "version": "{{version}}" + }, + "runtime": { + "name": "Electron", + "version": "{{version}}" + }, + "electron": { + "crashed_url": "app:///src/index.html" + } + }, + "release": "native-sentry-renderer-abort@1.0.0", + "environment": "development", + "user": { + "ip_address": "{{auto}}" + }, + "event_id": "{{id}}", + "timestamp": 0, + "breadcrumbs": [], + "tags": { + "event.environment": "native", + "event.origin": "electron", + "event.process": "renderer", + "event_type": "native" + } + }, + "attachments": [ { "attachment_type": "event.minidump" } ] +} diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/package.json b/test/e2e/test-apps/native-sentry/renderer-abort/package.json new file mode 100644 index 00000000..492d340c --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/package.json @@ -0,0 +1,9 @@ +{ + "name": "native-sentry-renderer-abort", + "version": "1.0.0", + "main": "src/main.js", + "dependencies": { + "@sentry/electron": "3.0.0", + "sadness-generator": "0.0.2" + } +} diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml new file mode 100644 index 00000000..bd182164 --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml @@ -0,0 +1,4 @@ +description: Native Renderer Abort +category: Native (Sentry Uploader) +condition: version.major >= 8 +command: yarn diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html b/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html new file mode 100644 index 00000000..716b9dc5 --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js b/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js new file mode 100644 index 00000000..af74216a --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js @@ -0,0 +1,23 @@ +const path = require('path'); + +const { app, BrowserWindow } = require('electron'); +const { init } = require('@sentry/electron'); + +init({ + dsn: '__DSN__', + debug: true, + autoSessionTracking: false, + onFatalError: () => {}, +}); + +app.on('ready', () => { + const mainWindow = new BrowserWindow({ + show: false, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + }, + }); + + mainWindow.loadFile(path.join(__dirname, 'index.html')); +}); \ No newline at end of file From 9cb925e5db20b0b957814e4ad8bb453c49208c15 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 13:25:24 +0000 Subject: [PATCH 2/8] Only test crashpad --- test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml | 2 +- test/e2e/test-apps/native-sentry/renderer-abort/src/main.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml index bd182164..5f4f0a3c 100644 --- a/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml +++ b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml @@ -1,4 +1,4 @@ description: Native Renderer Abort category: Native (Sentry Uploader) -condition: version.major >= 8 +condition: usesCrashpad && version.major >= 8 command: yarn diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js b/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js index af74216a..c7d7b7f0 100644 --- a/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js +++ b/test/e2e/test-apps/native-sentry/renderer-abort/src/main.js @@ -3,6 +3,8 @@ const path = require('path'); const { app, BrowserWindow } = require('electron'); const { init } = require('@sentry/electron'); +app.commandLine.appendSwitch('enable-crashpad'); + init({ dsn: '__DSN__', debug: true, From c2c7b5b0477edc5624550abf30ad5010d1c6bffc Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 13:47:32 +0000 Subject: [PATCH 3/8] Add a crude delay to see if abort minidumps are delayed on Windows --- .../integrations/sentry-minidump/index.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/integrations/sentry-minidump/index.ts b/src/main/integrations/sentry-minidump/index.ts index ca4367c8..dbe87b3d 100644 --- a/src/main/integrations/sentry-minidump/index.ts +++ b/src/main/integrations/sentry-minidump/index.ts @@ -12,7 +12,11 @@ import { getRendererProperties, trackRendererProperties } from '../../renderers' import { ElectronMainOptions } from '../../sdk'; import { checkPreviousSession, sessionCrashed } from '../../sessions'; import { BufferedWriteStore } from '../../store'; -import { deleteMinidump, getMinidumpLoader, MinidumpLoader } from './minidump-loader'; +import { deleteMinidump, getMinidumpLoader, MinidumpFile, MinidumpLoader } from './minidump-loader'; + +function delay(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} /** Sends minidumps via the Sentry uploader */ export class SentryMinidump implements Integration { @@ -211,7 +215,18 @@ export class SentryMinidump implements Integration { } try { - const minidumps = await this._minidumpLoader(); + let minidumps: MinidumpFile[] = []; + let retryCount = 10; + + while (retryCount > 0) { + minidumps = await this._minidumpLoader(); + if (minidumps.length > 0) { + break; + } + + retryCount -= 1; + await delay(100); + } if (minidumps.length > 0) { const hub = getCurrentHub(); From ab1a20c69b4345a2199bee62abd76c11bd08635a Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 14:00:37 +0000 Subject: [PATCH 4/8] Revert "Add a crude delay to see if abort minidumps are delayed on Windows" This reverts commit c2c7b5b0477edc5624550abf30ad5010d1c6bffc. --- .../integrations/sentry-minidump/index.ts | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/main/integrations/sentry-minidump/index.ts b/src/main/integrations/sentry-minidump/index.ts index dbe87b3d..ca4367c8 100644 --- a/src/main/integrations/sentry-minidump/index.ts +++ b/src/main/integrations/sentry-minidump/index.ts @@ -12,11 +12,7 @@ import { getRendererProperties, trackRendererProperties } from '../../renderers' import { ElectronMainOptions } from '../../sdk'; import { checkPreviousSession, sessionCrashed } from '../../sessions'; import { BufferedWriteStore } from '../../store'; -import { deleteMinidump, getMinidumpLoader, MinidumpFile, MinidumpLoader } from './minidump-loader'; - -function delay(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)); -} +import { deleteMinidump, getMinidumpLoader, MinidumpLoader } from './minidump-loader'; /** Sends minidumps via the Sentry uploader */ export class SentryMinidump implements Integration { @@ -215,18 +211,7 @@ export class SentryMinidump implements Integration { } try { - let minidumps: MinidumpFile[] = []; - let retryCount = 10; - - while (retryCount > 0) { - minidumps = await this._minidumpLoader(); - if (minidumps.length > 0) { - break; - } - - retryCount -= 1; - await delay(100); - } + const minidumps = await this._minidumpLoader(); if (minidumps.length > 0) { const hub = getCurrentHub(); From 9361a1c3c8572dc77aa5d7168806bf9d535cf4e7 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 14:12:18 +0000 Subject: [PATCH 5/8] More abort testing --- .../native-electron/renderer-abort/event.json | 18 +++++++++++++ .../renderer-abort/package.json | 9 +++++++ .../renderer-abort/recipe.only.yml | 4 +++ .../renderer-abort/src/index.html | 20 ++++++++++++++ .../renderer-abort/src/main.js | 27 +++++++++++++++++++ .../{recipe.yml => recipe.only.yml} | 0 6 files changed, 78 insertions(+) create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/event.json create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/package.json create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/src/index.html create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/src/main.js rename test/e2e/test-apps/native-sentry/renderer-abort/{recipe.yml => recipe.only.yml} (100%) diff --git a/test/e2e/test-apps/native-electron/renderer-abort/event.json b/test/e2e/test-apps/native-electron/renderer-abort/event.json new file mode 100644 index 00000000..39b367b0 --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/event.json @@ -0,0 +1,18 @@ +{ + "method": "minidump", + "namespacedData": { + "initialScope": { + "release":"native-electron-renderer-abort@1.0.0", + "user": { + "username": "some_user" + } + } + }, + "sentryKey": "37f8a2ee37c0409d8970bc7559c7c7e4", + "appId": "277345", + "data": { + "event_id": "{{id}}", + "timestamp": 0 + }, + "attachments": [ { "attachment_type": "event.minidump" } ] +} diff --git a/test/e2e/test-apps/native-electron/renderer-abort/package.json b/test/e2e/test-apps/native-electron/renderer-abort/package.json new file mode 100644 index 00000000..169dd24e --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/package.json @@ -0,0 +1,9 @@ +{ + "name": "native-electron-renderer-abort", + "version": "1.0.0", + "main": "src/main.js", + "dependencies": { + "@sentry/electron": "3.0.0", + "sadness-generator": "0.0.2" + } +} diff --git a/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml b/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml new file mode 100644 index 00000000..296667ca --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml @@ -0,0 +1,4 @@ +description: Native Renderer Abort +category: Native (Electron Uploader) +command: yarn +condition: usesCrashpad && version.major >= 8 diff --git a/test/e2e/test-apps/native-electron/renderer-abort/src/index.html b/test/e2e/test-apps/native-electron/renderer-abort/src/index.html new file mode 100644 index 00000000..716b9dc5 --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/src/index.html @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/test/e2e/test-apps/native-electron/renderer-abort/src/main.js b/test/e2e/test-apps/native-electron/renderer-abort/src/main.js new file mode 100644 index 00000000..70c42d1a --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/src/main.js @@ -0,0 +1,27 @@ +const path = require('path'); + +const { app, BrowserWindow } = require('electron'); +const { init, Integrations } = require('@sentry/electron'); + +app.commandLine.appendSwitch('enable-crashpad'); + +init({ + dsn: '__DSN__', + debug: true, + autoSessionTracking: false, + integrations: [new Integrations.ElectronMinidump()], + initialScope: { user: { username: 'some_user' } }, + onFatalError: () => {}, +}); + +app.on('ready', () => { + const mainWindow = new BrowserWindow({ + show: false, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + }, + }); + + mainWindow.loadFile(path.join(__dirname, 'index.html')); +}); \ No newline at end of file diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.only.yml similarity index 100% rename from test/e2e/test-apps/native-sentry/renderer-abort/recipe.yml rename to test/e2e/test-apps/native-sentry/renderer-abort/recipe.only.yml From 19963563e5b2db5f1335ea9392fd3bcd353979eb Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 16:36:56 +0000 Subject: [PATCH 6/8] More logging --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9e3d2aa5..d59d64fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,6 +8,7 @@ on: env: ELECTRON_CACHE_DIR: ${{ github.workspace }} FAILURE_LOG: true + ELECTRON_ENABLE_LOGGING: true jobs: build: From ae75135e5b75d94729ff8180f5564cf5a0615293 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 17:13:33 +0000 Subject: [PATCH 7/8] Test C abort --- .../{recipe.only.yml => recipe.yml} | 0 .../native-sentry/renderer-abort/addon.cc | 26 +++++++++++++++++++ .../native-sentry/renderer-abort/binding.gyp | 8 ++++++ .../native-sentry/renderer-abort/package.json | 6 +++++ .../renderer-abort/recipe.only.yml | 4 +-- .../renderer-abort/src/index.html | 4 +-- 6 files changed, 44 insertions(+), 4 deletions(-) rename test/e2e/test-apps/native-electron/renderer-abort/{recipe.only.yml => recipe.yml} (100%) create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/addon.cc create mode 100644 test/e2e/test-apps/native-sentry/renderer-abort/binding.gyp diff --git a/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml b/test/e2e/test-apps/native-electron/renderer-abort/recipe.yml similarity index 100% rename from test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml rename to test/e2e/test-apps/native-electron/renderer-abort/recipe.yml diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/addon.cc b/test/e2e/test-apps/native-sentry/renderer-abort/addon.cc new file mode 100644 index 00000000..6e70b9a9 --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/addon.cc @@ -0,0 +1,26 @@ +#include +#include + +namespace demo +{ + napi_value Method(napi_env env, napi_callback_info args) + { + abort(); + return nullptr; + } + + napi_value init(napi_env env, napi_value exports) + { + napi_status status; + napi_value fn; + status = napi_create_function(env, nullptr, 0, Method, nullptr, &fn); + if (status != napi_ok) + return nullptr; + status = napi_set_named_property(env, exports, "abort", fn); + if (status != napi_ok) + return nullptr; + return exports; + } + + NAPI_MODULE(NODE_GYP_MODULE_NAME, init) +} diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/binding.gyp b/test/e2e/test-apps/native-sentry/renderer-abort/binding.gyp new file mode 100644 index 00000000..3c79ca84 --- /dev/null +++ b/test/e2e/test-apps/native-sentry/renderer-abort/binding.gyp @@ -0,0 +1,8 @@ +{ + "targets": [ + { + "target_name": "addon", + "sources": [ "addon.cc" ] + } + ] +} diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/package.json b/test/e2e/test-apps/native-sentry/renderer-abort/package.json index 492d340c..5f53c275 100644 --- a/test/e2e/test-apps/native-sentry/renderer-abort/package.json +++ b/test/e2e/test-apps/native-sentry/renderer-abort/package.json @@ -2,8 +2,14 @@ "name": "native-sentry-renderer-abort", "version": "1.0.0", "main": "src/main.js", + "scripts": { + "build": "node-gyp configure build" + }, "dependencies": { "@sentry/electron": "3.0.0", "sadness-generator": "0.0.2" + }, + "devDependencies": { + "node-gyp": "9.3.1" } } diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/recipe.only.yml b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.only.yml index 5f4f0a3c..809d8b8f 100644 --- a/test/e2e/test-apps/native-sentry/renderer-abort/recipe.only.yml +++ b/test/e2e/test-apps/native-sentry/renderer-abort/recipe.only.yml @@ -1,4 +1,4 @@ description: Native Renderer Abort category: Native (Sentry Uploader) -condition: usesCrashpad && version.major >= 8 -command: yarn +condition: usesCrashpad && version.major >= 20 +command: yarn && yarn build diff --git a/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html b/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html index 716b9dc5..976a96b5 100644 --- a/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html +++ b/test/e2e/test-apps/native-sentry/renderer-abort/src/index.html @@ -6,14 +6,14 @@ From b353b57946db3bd39ccf08bf5134ec06f0b57bd0 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 9 Jan 2023 18:11:04 +0000 Subject: [PATCH 8/8] Last ditch effort testing Electron uploader --- .../native-electron/renderer-abort/addon.cc | 26 +++++++++++++++++++ .../renderer-abort/binding.gyp | 8 ++++++ .../renderer-abort/package.json | 6 +++++ .../renderer-abort/recipe.only.yml | 4 +++ .../native-electron/renderer-abort/recipe.yml | 4 --- .../renderer-abort/src/index.html | 4 +-- 6 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/addon.cc create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/binding.gyp create mode 100644 test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml delete mode 100644 test/e2e/test-apps/native-electron/renderer-abort/recipe.yml diff --git a/test/e2e/test-apps/native-electron/renderer-abort/addon.cc b/test/e2e/test-apps/native-electron/renderer-abort/addon.cc new file mode 100644 index 00000000..6e70b9a9 --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/addon.cc @@ -0,0 +1,26 @@ +#include +#include + +namespace demo +{ + napi_value Method(napi_env env, napi_callback_info args) + { + abort(); + return nullptr; + } + + napi_value init(napi_env env, napi_value exports) + { + napi_status status; + napi_value fn; + status = napi_create_function(env, nullptr, 0, Method, nullptr, &fn); + if (status != napi_ok) + return nullptr; + status = napi_set_named_property(env, exports, "abort", fn); + if (status != napi_ok) + return nullptr; + return exports; + } + + NAPI_MODULE(NODE_GYP_MODULE_NAME, init) +} diff --git a/test/e2e/test-apps/native-electron/renderer-abort/binding.gyp b/test/e2e/test-apps/native-electron/renderer-abort/binding.gyp new file mode 100644 index 00000000..3c79ca84 --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/binding.gyp @@ -0,0 +1,8 @@ +{ + "targets": [ + { + "target_name": "addon", + "sources": [ "addon.cc" ] + } + ] +} diff --git a/test/e2e/test-apps/native-electron/renderer-abort/package.json b/test/e2e/test-apps/native-electron/renderer-abort/package.json index 169dd24e..3e844590 100644 --- a/test/e2e/test-apps/native-electron/renderer-abort/package.json +++ b/test/e2e/test-apps/native-electron/renderer-abort/package.json @@ -2,8 +2,14 @@ "name": "native-electron-renderer-abort", "version": "1.0.0", "main": "src/main.js", + "scripts": { + "build": "node-gyp configure build" + }, "dependencies": { "@sentry/electron": "3.0.0", "sadness-generator": "0.0.2" + }, + "devDependencies": { + "node-gyp": "9.3.1" } } diff --git a/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml b/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml new file mode 100644 index 00000000..15cd1a8c --- /dev/null +++ b/test/e2e/test-apps/native-electron/renderer-abort/recipe.only.yml @@ -0,0 +1,4 @@ +description: Native Renderer Abort +category: Native (Electron Uploader) +condition: usesCrashpad && version.major >= 20 +command: yarn && yarn build diff --git a/test/e2e/test-apps/native-electron/renderer-abort/recipe.yml b/test/e2e/test-apps/native-electron/renderer-abort/recipe.yml deleted file mode 100644 index 296667ca..00000000 --- a/test/e2e/test-apps/native-electron/renderer-abort/recipe.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: Native Renderer Abort -category: Native (Electron Uploader) -command: yarn -condition: usesCrashpad && version.major >= 8 diff --git a/test/e2e/test-apps/native-electron/renderer-abort/src/index.html b/test/e2e/test-apps/native-electron/renderer-abort/src/index.html index 716b9dc5..976a96b5 100644 --- a/test/e2e/test-apps/native-electron/renderer-abort/src/index.html +++ b/test/e2e/test-apps/native-electron/renderer-abort/src/index.html @@ -6,14 +6,14 @@