From 88a4dc7ec0ae628fed284f6c2f3ef4173059bdad Mon Sep 17 00:00:00 2001 From: Joe Haines Date: Thu, 21 Apr 2022 13:28:50 +0100 Subject: [PATCH 01/36] Fix RN CLI 'insert' command on RN 0.68+ RN 0.68 changed 'AppDelegate.m' to 'AppDelegate.mm', which broke our previous logic for finding the file --- CHANGELOG.md | 1 + packages/react-native-cli/src/lib/Insert.ts | 38 +++++++++++++++---- .../src/lib/__test__/Insert.test.ts | 34 +++++++++++------ 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea8b70b470..b531d01db2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - (plugin-react) Add 'children' prop to BugsnagErrorBoundary [#1723](https://github.com/bugsnag/bugsnag-js/pull/1723) - (react-native) Fix reporting of `RCTFatal()` crashes on iOS. [#1719](https://github.com/bugsnag/bugsnag-js/pull/1719) +- (react-native-cli) Fix 'insert' command with RN 0.68+ [#1726](https://github.com/bugsnag/bugsnag-js/pull/1726) - (plugin-electron-app-breadcrumbs) Fix a TypeError caused by using a BrowserWindow object after it is destroyed [#1722](https://github.com/bugsnag/bugsnag-js/pull/1722) ## v7.16.3 (2022-04-05) diff --git a/packages/react-native-cli/src/lib/Insert.ts b/packages/react-native-cli/src/lib/Insert.ts index 53572e9256..31f78943a8 100644 --- a/packages/react-native-cli/src/lib/Insert.ts +++ b/packages/react-native-cli/src/lib/Insert.ts @@ -44,19 +44,34 @@ export async function insertJs (projectRoot: string, logger: Logger): Promise { logger.info('Adding Bugsnag to the iOS layer') + const iosDir = path.join(projectRoot, 'ios') - let xcodeprojDir + let appDelegatePath + try { - xcodeprojDir = (await fs.readdir(iosDir)).find(p => p.endsWith('.xcodeproj')) + const xcodeprojDir = (await fs.readdir(iosDir)).find(p => p.endsWith('.xcodeproj')) + if (!xcodeprojDir) { - logger.warn(FAIL_MSG('AppDelegate.m')) + logger.warn(FAIL_MSG('AppDelegate')) return } + + const appDelegateDirectory = path.join(iosDir, xcodeprojDir.replace(/\.xcodeproj$/, '')) + + // handle both AppDelegate.m and AppDelegate.mm (RN 0.68+) + const appDelegateFile = (await fs.readdir(appDelegateDirectory)).find(p => p.startsWith('AppDelegate.m')) + + if (!appDelegateFile) { + logger.warn(FAIL_MSG('AppDelegate')) + return + } + + appDelegatePath = path.join(iosDir, xcodeprojDir.replace(/\.xcodeproj$/, ''), appDelegateFile) } catch (e) { - logger.error(FAIL_MSG('AppDelegate.m')) + logger.error(FAIL_MSG('AppDelegate')) return } - const appDelegatePath = path.join(iosDir, xcodeprojDir.replace(/\.xcodeproj$/, ''), 'AppDelegate.m') + try { const appDelegate = await fs.readFile(appDelegatePath, 'utf8') @@ -67,14 +82,21 @@ export async function insertIos (projectRoot: string, logger: Logger): Promise { test('insertIos(): success', async () => { type readdir = (path: string) => Promise const readdirMock = fs.readdir as unknown as jest.MockedFunction - readdirMock.mockResolvedValue(['BugsnagReactNativeCliTest.xcodeproj']) + + readdirMock + .mockResolvedValueOnce(['BugsnagReactNativeCliTest.xcodeproj']) + .mockResolvedValueOnce(['a', 'b', 'AppDelegate.m', 'c', 'd']) const appDelegate = await loadFixture(path.join(__dirname, 'fixtures', 'AppDelegate-before.m')) const readFileMock = fs.readFile as jest.MockedFunction @@ -94,7 +97,10 @@ test('insertIos(): success', async () => { test('insertIos(): already present', async () => { type readdir = (path: string) => Promise const readdirMock = fs.readdir as unknown as jest.MockedFunction - readdirMock.mockResolvedValue(['BugsnagReactNativeCliTest.xcodeproj']) + + readdirMock + .mockResolvedValueOnce(['BugsnagReactNativeCliTest.xcodeproj']) + .mockResolvedValueOnce(['a', 'b', 'AppDelegate.mm', 'c', 'd']) const appDelegate = await loadFixture(path.join(__dirname, 'fixtures', 'AppDelegate-after.m')) const readFileMock = fs.readFile as jest.MockedFunction @@ -104,7 +110,7 @@ test('insertIos(): already present', async () => { writeFileMock.mockResolvedValue() await insertIos('/random/path', logger) - expect(readFileMock).toHaveBeenCalledWith('/random/path/ios/BugsnagReactNativeCliTest/AppDelegate.m', 'utf8') + expect(readFileMock).toHaveBeenCalledWith('/random/path/ios/BugsnagReactNativeCliTest/AppDelegate.mm', 'utf8') expect(writeFileMock).not.toHaveBeenCalled() expect(logger.warn).toHaveBeenCalledWith('Bugsnag is already included, skipping') @@ -113,7 +119,10 @@ test('insertIos(): already present', async () => { test('insertIos(): failure to locate file', async () => { type readdir = (path: string) => Promise const readdirMock = fs.readdir as unknown as jest.MockedFunction - readdirMock.mockResolvedValue(['BugsnagReactNativeCliTest.xcodeproj']) + + readdirMock + .mockResolvedValueOnce(['BugsnagReactNativeCliTest.xcodeproj']) + .mockResolvedValueOnce(['a', 'b', 'not-an-AppDelegate.x', 'c', 'd']) const readFileMock = fs.readFile as jest.MockedFunction readFileMock.mockRejectedValue(await generateNotFoundError()) @@ -121,10 +130,10 @@ test('insertIos(): failure to locate file', async () => { const writeFileMock = fs.writeFile as jest.MockedFunction await insertIos('/random/path', logger) - expect(readFileMock).toHaveBeenCalledWith('/random/path/ios/BugsnagReactNativeCliTest/AppDelegate.m', 'utf8') + expect(readFileMock).not.toHaveBeenCalled() expect(writeFileMock).not.toHaveBeenCalled() - expect(logger.error).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate.m" automatically.')) + expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate" automatically.')) }) test('insertIos(): failure to locate project directory', async () => { @@ -139,7 +148,7 @@ test('insertIos(): failure to locate project directory', async () => { expect(readFileMock).not.toHaveBeenCalled() expect(writeFileMock).not.toHaveBeenCalled() - expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate.m" automatically.')) + expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate" automatically.')) }) test('insertIos(): project directory error', async () => { @@ -154,23 +163,26 @@ test('insertIos(): project directory error', async () => { expect(readFileMock).not.toHaveBeenCalled() expect(writeFileMock).not.toHaveBeenCalled() - expect(logger.error).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate.m" automatically.')) + expect(logger.error).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate" automatically.')) }) test('insertIos(): no identifiable app launch method', async () => { type readdir = (path: string) => Promise const readdirMock = fs.readdir as unknown as jest.MockedFunction - readdirMock.mockResolvedValue(['BugsnagReactNativeCliTest.xcodeproj']) + + readdirMock + .mockResolvedValueOnce(['BugsnagReactNativeCliTest.xcodeproj']) + .mockResolvedValueOnce(['a', 'b', 'AppDelegate.mm', 'c', 'd']) const readFileMock = fs.readFile as jest.MockedFunction readFileMock.mockResolvedValue('not good objective c') const writeFileMock = fs.writeFile as jest.MockedFunction await insertIos('/random/path', logger) - expect(readFileMock).toHaveBeenCalledWith('/random/path/ios/BugsnagReactNativeCliTest/AppDelegate.m', 'utf8') + expect(readFileMock).toHaveBeenCalledWith('/random/path/ios/BugsnagReactNativeCliTest/AppDelegate.mm', 'utf8') expect(writeFileMock).not.toHaveBeenCalled() - expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate.m" automatically.')) + expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Failed to update "AppDelegate.mm" automatically.')) }) test('insertAndroid(): success', async () => { From a61ea017c84294f0e20f20d7d4dbd2319312355e Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Thu, 28 Apr 2022 15:43:12 +0100 Subject: [PATCH 02/36] add browser tests --- .buildkite/browser-pipeline.yml | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index 2fbad82a7f..6becdcf8ac 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -17,6 +17,21 @@ steps: push: - browser-maze-runner:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-browser-${BRANCH_NAME} + - label: ':chrome: v30 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_30 + concurrency: 5 + concurrency_group: 'browserstack' + - label: ':chrome: v43 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 @@ -231,6 +246,51 @@ steps: concurrency: 5 concurrency_group: 'browserstack' + - label: ':android: Google Nexus 5 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_nexus5 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':android: Samsung Galaxy S6 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_s6 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':android: Samsung Galaxy S7 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_s7 + concurrency: 5 + concurrency_group: 'browserstack' + - label: ':android: Samsung Galaxy S8 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 From 64e0c44606b86b955d52ae53f572577938b48b1b Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Thu, 28 Apr 2022 16:10:57 +0100 Subject: [PATCH 03/36] chore: update browser errors.yml --- .../features/fixtures/browser_errors.yml | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 87a41a0d18..2e594fff6b 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -281,6 +281,84 @@ iphone_7: lineNumber: 18 columnNumber: 25 +android_nexus5: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token '!'" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +android_s6: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token '!'" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +android_s7: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token '!'" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + android_s8: handled: errorClass: 'ReferenceError' @@ -381,6 +459,32 @@ firefox_latest: lineNumber: 18 columnNumber: 25 +chrome_30: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + chrome_43: handled: errorClass: 'ReferenceError' @@ -407,6 +511,7 @@ chrome_43: lineNumber: 18 columnNumber: 7 + chrome_61: handled: errorClass: 'ReferenceError' From c4ae2bf51428e76b8fd027ef1814030d33a0117c Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Fri, 29 Apr 2022 12:13:59 +0100 Subject: [PATCH 04/36] chore: add more browsers to test --- .buildkite/browser-pipeline.yml | 124 +++++++++++ .../features/fixtures/browser_errors.yml | 207 ++++++++++++++++++ 2 files changed, 331 insertions(+) diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index 6becdcf8ac..6008010f7c 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -32,6 +32,96 @@ steps: concurrency: 5 concurrency_group: 'browserstack' + - label: ':chrome: v32 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_32 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v34 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_34 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v36 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_36 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v38 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_38 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v40 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_40 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v42 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_42 + concurrency: 5 + concurrency_group: 'browserstack' + - label: ':chrome: v43 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 @@ -229,6 +319,23 @@ steps: concurrency: 5 concurrency_group: 'browserstack' + - label: ':iphone: iOS 9 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=iphone_6s + env: + HOST: "bs-local.com" + concurrency: 5 + concurrency_group: 'browserstack' + - label: ':iphone: iOS 10.3 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 @@ -246,6 +353,23 @@ steps: concurrency: 5 concurrency_group: 'browserstack' + - label: ':iphone: iOS 15.4 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=iphone_13 + env: + HOST: "bs-local.com" + concurrency: 5 + concurrency_group: 'browserstack' + - label: ':android: Google Nexus 5 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 2e594fff6b..35379e714c 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -255,6 +255,32 @@ safari_15: lineNumber: 18 columnNumber: 25 +iphone_6s: + handled: + errorClass: 'ReferenceError' + errorMessage: "Can't find variable: foo" + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token '!'. Parse error." + lineNumber: 18 + columnNumber: 0 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 22 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: "Can't find variable: nevergoingtoexist_notinamillionyears" + lineNumber: 18 + columnNumber: 43 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI error + lineNumber: 18 + columnNumber: 25 + iphone_7: handled: errorClass: 'ReferenceError' @@ -281,6 +307,31 @@ iphone_7: lineNumber: 18 columnNumber: 25 +iphone_13: + handled: + errorClass: 'ReferenceError' + errorMessage: "Can't find variable: foo" + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token '!'. Parse error." + lineNumber: 18 + columnNumber: 0 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 22 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: "Can't find variable: nevergoingtoexist_notinamillionyears" + lineNumber: 18 + columnNumber: 43 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI error + lineNumber: 18 + columnNumber: 25 android_nexus5: handled: errorClass: 'ReferenceError' @@ -485,6 +536,162 @@ chrome_30: lineNumber: 18 columnNumber: 7 +chrome_32: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +chrome_34: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +chrome_36: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +chrome_38: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +chrome_40: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + +chrome_42: + handled: + errorClass: 'ReferenceError' + errorMessage: 'foo is not defined' + unhandled_syntax: + errorClass: 'SyntaxError' + errorMessage: "Unexpected token !" + lineNumber: 18 + columnNumber: 13 + file: '/unhandled/script/a.html' + unhandled_thrown: + errorClass: 'Error' + errorMessage: "bad things" + lineNumber: 18 + columnNumber: 13 + unhandled_undefined_function: + errorClass: 'ReferenceError' + errorMessage: nevergoingtoexist_notinamillionyears is not defined + lineNumber: 18 + columnNumber: 7 + unhandled_malformed_uri: + errorClass: 'URIError' + errorMessage: URI malformed + lineNumber: 18 + columnNumber: 7 + chrome_43: handled: errorClass: 'ReferenceError' From 5741b0e86f6d15e38a2896a6167c19e95deeb41d Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Fri, 29 Apr 2022 12:14:11 +0100 Subject: [PATCH 05/36] [full ci] From 8a6d328d12639072b4d18b06e5449f80cce1888b Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 09:21:38 +0100 Subject: [PATCH 06/36] chore: update chrome 30 errors --- test/browser/features/fixtures/browser_errors.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 35379e714c..7253a6587e 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -518,7 +518,7 @@ chrome_30: errorClass: 'SyntaxError' errorMessage: "Unexpected token !" lineNumber: 18 - columnNumber: 13 + columnNumber: 12 file: '/unhandled/script/a.html' unhandled_thrown: errorClass: 'Error' @@ -534,7 +534,7 @@ chrome_30: errorClass: 'URIError' errorMessage: URI malformed lineNumber: 18 - columnNumber: 7 + columnNumber: 6 chrome_32: handled: From a0874bc8b585a459f1930dc6366ca092f50d1fbf Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 09:23:07 +0100 Subject: [PATCH 07/36] chore: fix bad thing error message for ios 9 --- test/browser/features/fixtures/browser_errors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 7253a6587e..1c328091e1 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -267,7 +267,7 @@ iphone_6s: file: '/unhandled/script/a.html' unhandled_thrown: errorClass: 'Error' - errorMessage: "bad things" + errorMessage: "Error: bad things" lineNumber: 18 columnNumber: 22 unhandled_undefined_function: From 0774b815dc8e2b25b462020b19ab82956d71f43a Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 09:23:12 +0100 Subject: [PATCH 08/36] [full ci] From c7b372eaed5348b1ad9c5bea6667a152e7be74e5 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 10:07:57 +0100 Subject: [PATCH 09/36] chore bump iphone 6s errors --- test/browser/features/fixtures/browser_errors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 1c328091e1..6fed6fc4d4 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -269,7 +269,7 @@ iphone_6s: errorClass: 'Error' errorMessage: "Error: bad things" lineNumber: 18 - columnNumber: 22 + columnNumber: 36 unhandled_undefined_function: errorClass: 'ReferenceError' errorMessage: "Can't find variable: nevergoingtoexist_notinamillionyears" From 48ae964755c819ff9d58073af486e04f206c736f Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 10:08:01 +0100 Subject: [PATCH 10/36] [full ci] From f6ab57aa62d2d013fb6b08ae594dda26abab2d96 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 10:44:27 +0100 Subject: [PATCH 11/36] chore bump iphone 6s errors --- test/browser/features/fixtures/browser_errors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 6fed6fc4d4..0532a212b7 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -276,7 +276,7 @@ iphone_6s: lineNumber: 18 columnNumber: 43 unhandled_malformed_uri: - errorClass: 'URIError' + errorClass: 'Error' errorMessage: URI error lineNumber: 18 columnNumber: 25 From cd57188a36bef1213266b1570bc5a473d76bd680 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Tue, 3 May 2022 10:44:32 +0100 Subject: [PATCH 12/36] [full ci] From 46dfbe9166d3da6795cdb1b4005d1e1c5528c34a Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 28 Apr 2022 14:20:59 +0100 Subject: [PATCH 13/36] dep: bump bugsnag-android dependency to v5.22.1 --- CHANGELOG.md | 10 ++++++++++ packages/react-native/android/build.gradle | 4 ++-- packages/react-native/prepare-android-vendor.config | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20276b1a9e..9bf1beb72b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## TBD + +### Changed + +- (react-native) Update bugsnag-android to v5.22.1 + - Max reported threads can now be configured using manifest meta-data "com.bugsnag.android. MAX_REPORTED_THREADS" + [bugsnag-android#1655](https://github.com/bugsnag/bugsnag-android/pull/1655) + - Small improvement to startup performance (Bugsnag.start) + [bugsnag-android#1648](https://github.com/bugsnag/bugsnag-android/pull/1648) + ## v7.16.4 (2022-05-03) - (expo) This release marks a change in the version scheme used by `@bugsnag/expo` and a move to its own repo, [`bugsnag-expo`](https://github.com/bugsnag/bugsnag-expo) diff --git a/packages/react-native/android/build.gradle b/packages/react-native/android/build.gradle index 48a6d61d17..fd07de2194 100644 --- a/packages/react-native/android/build.gradle +++ b/packages/react-native/android/build.gradle @@ -39,8 +39,8 @@ android { } dependencies { - api "com.bugsnag:bugsnag-android:5.22.0" - api "com.bugsnag:bugsnag-plugin-react-native:5.22.0" + api "com.bugsnag:bugsnag-android:5.22.1" + api "com.bugsnag:bugsnag-plugin-react-native:5.22.1" implementation 'com.facebook.react:react-native:+' testImplementation "junit:junit:4.12" diff --git a/packages/react-native/prepare-android-vendor.config b/packages/react-native/prepare-android-vendor.config index dea08dd29f..9037e792dd 100644 --- a/packages/react-native/prepare-android-vendor.config +++ b/packages/react-native/prepare-android-vendor.config @@ -1,2 +1,2 @@ version -5.22.0 +5.22.1 From 6bea6b6d10e868da9737a0fbc7670520f0fd1337 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 08:42:17 +0100 Subject: [PATCH 14/36] [full ci] From 5f57b4796153d338cdf9a0d08ba72d48ce3ed4fd Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 09:26:41 +0100 Subject: [PATCH 15/36] chore: update browser errors for iphone 6s --- test/browser/features/fixtures/browser_errors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 0532a212b7..66cd1c4a06 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -277,7 +277,7 @@ iphone_6s: columnNumber: 43 unhandled_malformed_uri: errorClass: 'Error' - errorMessage: URI error + errorMessage: "URIError: URI error" lineNumber: 18 columnNumber: 25 From d664777c81bc1d1c9e71a0f9e60c1ee0712a7ee1 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 09:26:44 +0100 Subject: [PATCH 16/36] [full ci] From c77da7d9454484232c77e92919507e87d66cda67 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 10:38:28 +0100 Subject: [PATCH 17/36] [full ci] --- .buildkite/browser-pipeline.yml | 880 +++++++++---------- .buildkite/pipeline.yml | 214 ++--- test/browser/features/steps/browser_steps.rb | 2 +- 3 files changed, 548 insertions(+), 548 deletions(-) diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index 6008010f7c..c489265d87 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -16,308 +16,308 @@ steps: - docker-compose#v3.9.0: push: - browser-maze-runner:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-browser-${BRANCH_NAME} - - - label: ':chrome: v30 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_30 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v32 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_32 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v34 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_34 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v36 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_36 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v38 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_38 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v40 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_40 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v42 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_42 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v43 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_43 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v61 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_61 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: latest Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_latest - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':ie: v8 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=ie_8 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':ie: v9 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=ie_9 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':ie: v10 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=ie_10 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':ie: v11 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=ie_11 - env: - HOST: 'localhost' # IE11 needs the host set to localhost for some reason!ß - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':edge: v14 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=edge_14 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':edge: v15 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=edge_15 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':safari: v6 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=safari_6 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':safari: v10 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=safari_10 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':safari: v13 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=safari_13 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':safari: v15 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=safari_15 - concurrency: 5 - concurrency_group: 'browserstack' +# +# - label: ':chrome: v30 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_30 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v32 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_32 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v34 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_34 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v36 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_36 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v38 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_38 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v40 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_40 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v42 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_42 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v43 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_43 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: v61 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_61 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':chrome: latest Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=chrome_latest +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':ie: v8 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=ie_8 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':ie: v9 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=ie_9 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':ie: v10 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=ie_10 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':ie: v11 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=ie_11 +# env: +# HOST: 'localhost' # IE11 needs the host set to localhost for some reason!ß +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':edge: v14 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=edge_14 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':edge: v15 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=edge_15 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':safari: v6 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=safari_6 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':safari: v10 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=safari_10 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':safari: v13 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=safari_13 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':safari: v15 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=safari_15 +# concurrency: 5 +# concurrency_group: 'browserstack' - label: ':iphone: iOS 9 Browser tests' depends_on: "browser-maze-runner-image" @@ -336,141 +336,141 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':iphone: iOS 10.3 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=iphone_7 - env: - HOST: "bs-local.com" - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':iphone: iOS 15.4 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=iphone_13 - env: - HOST: "bs-local.com" - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':android: Google Nexus 5 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=android_nexus5 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':android: Samsung Galaxy S6 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=android_s6 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':android: Samsung Galaxy S7 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=android_s7 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':android: Samsung Galaxy S8 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=android_s8 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':firefox: v30 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=firefox_30 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':firefox: v56 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=firefox_56 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':firefox: latest Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=firefox_latest - concurrency: 5 - concurrency_group: 'browserstack' +# - label: ':iphone: iOS 10.3 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=iphone_7 +# env: +# HOST: "bs-local.com" +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':iphone: iOS 15.4 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=iphone_13 +# env: +# HOST: "bs-local.com" +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':android: Google Nexus 5 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=android_nexus5 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':android: Samsung Galaxy S6 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=android_s6 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':android: Samsung Galaxy S7 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=android_s7 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':android: Samsung Galaxy S8 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=android_s8 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':firefox: v30 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=firefox_30 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':firefox: v56 Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=firefox_56 +# concurrency: 5 +# concurrency_group: 'browserstack' +# +# - label: ':firefox: latest Browser tests' +# depends_on: "browser-maze-runner-image" +# timeout_in_minutes: 20 +# plugins: +# docker-compose#v3.9.0: +# pull: browser-maze-runner +# run: browser-maze-runner +# use-aliases: true +# verbose: true +# command: +# - --farm=bs +# - --browser=firefox_latest +# concurrency: 5 +# concurrency_group: 'browserstack' diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 1415073109..741f65ce3d 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -60,110 +60,110 @@ steps: commit: '${BUILDKITE_COMMIT}' message: '${BUILDKITE_MESSAGE}' async: true - - - label: 'Trigger Node pipeline' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - depends_on: 'package-js' - trigger: 'bugsnag-js-node' - build: - branch: '${BUILDKITE_BRANCH}' - commit: '${BUILDKITE_COMMIT}' - message: '${BUILDKITE_MESSAGE}' - async: true - - - label: 'Trigger Expo pipeline' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - depends_on: 'publish-js' - trigger: 'bugsnag-expo' - build: - env: - BUGSNAG_JS_BRANCH: '${BUILDKITE_BRANCH}' - BUGSNAG_JS_COMMIT: '${BUILDKITE_COMMIT}' - # a branch name that's safe to use as a docker cache identifier - BUGSNAG_JS_CACHE_SAFE_BRANCH_NAME: '${BRANCH_NAME}' - - - label: 'Trigger React Native pipeline' - depends_on: - - 'publish-js' - - 'android-builder-base' - trigger: 'bugsnag-js-react-native' - build: - branch: '${BUILDKITE_BRANCH}' - commit: '${BUILDKITE_COMMIT}' - message: '${BUILDKITE_MESSAGE}' - async: true - - - label: 'Trigger React Native CLI pipeline' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - depends_on: - - 'publish-js' - - 'android-builder-base' - trigger: 'bugsnag-js-react-native-cli' - build: - branch: '${BUILDKITE_BRANCH}' - commit: '${BUILDKITE_COMMIT}' - message: '${BUILDKITE_MESSAGE}' - async: true - - - label: ':aws-lambda: AWS Lambda tests' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - timeout_in_minutes: 35 - agents: - queue: 'opensource-mac-cocoa-10.15' - commands: - # force the NPM registry as the default on CI is artifactory, which can't - # currently install from our lockfile - - npm ci --registry https://registry.npmjs.org - - cd test/aws-lambda - - bundle install - - bundle exec maze-runner - - # - # Core tests and checks - # - - label: ':docker: Build CI image' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - key: 'ci-image' - depends_on: 'package-js' - timeout_in_minutes: 20 - plugins: - - artifacts#v1.5.0: - download: min_packages.tar - - docker-compose#v3.9.0: - build: - - ci - image-repository: 855461928731.dkr.ecr.us-west-1.amazonaws.com/js - cache-from: - - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} - - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base - - docker-compose#v3.9.0: - push: - - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} - - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base - - - label: 'Lint' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - depends_on: 'ci-image' - timeout_in_minutes: 10 - plugins: - docker-compose#v3.9.0: - run: ci - command: 'npm run test:lint' - - - label: 'Unit tests' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - depends_on: 'ci-image' - timeout_in_minutes: 10 - plugins: - docker-compose#v3.9.0: - run: ci - command: 'npm run test:unit' - - - label: 'Type checks/tests' - if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" - depends_on: 'ci-image' - timeout_in_minutes: 10 - plugins: - docker-compose#v3.9.0: - run: ci - command: 'npm run test:types' +# +# - label: 'Trigger Node pipeline' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# depends_on: 'package-js' +# trigger: 'bugsnag-js-node' +# build: +# branch: '${BUILDKITE_BRANCH}' +# commit: '${BUILDKITE_COMMIT}' +# message: '${BUILDKITE_MESSAGE}' +# async: true +# +# - label: 'Trigger Expo pipeline' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# depends_on: 'publish-js' +# trigger: 'bugsnag-expo' +# build: +# env: +# BUGSNAG_JS_BRANCH: '${BUILDKITE_BRANCH}' +# BUGSNAG_JS_COMMIT: '${BUILDKITE_COMMIT}' +# # a branch name that's safe to use as a docker cache identifier +# BUGSNAG_JS_CACHE_SAFE_BRANCH_NAME: '${BRANCH_NAME}' +# +# - label: 'Trigger React Native pipeline' +# depends_on: +# - 'publish-js' +# - 'android-builder-base' +# trigger: 'bugsnag-js-react-native' +# build: +# branch: '${BUILDKITE_BRANCH}' +# commit: '${BUILDKITE_COMMIT}' +# message: '${BUILDKITE_MESSAGE}' +# async: true +# +# - label: 'Trigger React Native CLI pipeline' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# depends_on: +# - 'publish-js' +# - 'android-builder-base' +# trigger: 'bugsnag-js-react-native-cli' +# build: +# branch: '${BUILDKITE_BRANCH}' +# commit: '${BUILDKITE_COMMIT}' +# message: '${BUILDKITE_MESSAGE}' +# async: true +# +# - label: ':aws-lambda: AWS Lambda tests' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# timeout_in_minutes: 35 +# agents: +# queue: 'opensource-mac-cocoa-10.15' +# commands: +# # force the NPM registry as the default on CI is artifactory, which can't +# # currently install from our lockfile +# - npm ci --registry https://registry.npmjs.org +# - cd test/aws-lambda +# - bundle install +# - bundle exec maze-runner +# +# # +# # Core tests and checks +# # +# - label: ':docker: Build CI image' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# key: 'ci-image' +# depends_on: 'package-js' +# timeout_in_minutes: 20 +# plugins: +# - artifacts#v1.5.0: +# download: min_packages.tar +# - docker-compose#v3.9.0: +# build: +# - ci +# image-repository: 855461928731.dkr.ecr.us-west-1.amazonaws.com/js +# cache-from: +# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} +# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base +# - docker-compose#v3.9.0: +# push: +# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} +# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base +# +# - label: 'Lint' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# depends_on: 'ci-image' +# timeout_in_minutes: 10 +# plugins: +# docker-compose#v3.9.0: +# run: ci +# command: 'npm run test:lint' +# +# - label: 'Unit tests' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# depends_on: 'ci-image' +# timeout_in_minutes: 10 +# plugins: +# docker-compose#v3.9.0: +# run: ci +# command: 'npm run test:unit' +# +# - label: 'Type checks/tests' +# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" +# depends_on: 'ci-image' +# timeout_in_minutes: 10 +# plugins: +# docker-compose#v3.9.0: +# run: ci +# command: 'npm run test:types' diff --git a/test/browser/features/steps/browser_steps.rb b/test/browser/features/steps/browser_steps.rb index 254a97ae21..5ff2398510 100644 --- a/test/browser/features/steps/browser_steps.rb +++ b/test/browser/features/steps/browser_steps.rb @@ -21,7 +21,7 @@ end When('the test should run in this browser') do - wait = Selenium::WebDriver::Wait.new(timeout: 10) + wait = Selenium::WebDriver::Wait.new(timeout: 15) wait.until { Maze.driver.find_element(id: 'bugsnag-test-should-run') && Maze.driver.find_element(id: 'bugsnag-test-should-run').text != 'PENDING' From 4bc7b58b8ed0604f35ef5b161b101c64b74107f5 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 11:48:32 +0100 Subject: [PATCH 18/36] chore: revert pipelinechange --- .buildkite/browser-pipeline.yml | 865 ++++++++++++++++---------------- .buildkite/pipeline.yml | 214 ++++---- 2 files changed, 531 insertions(+), 548 deletions(-) diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index c489265d87..5a6350a4b1 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -17,309 +17,279 @@ steps: push: - browser-maze-runner:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-browser-${BRANCH_NAME} # -# - label: ':chrome: v30 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_30 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v32 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_32 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v34 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_34 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v36 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_36 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v38 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_38 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v40 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_40 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v42 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_42 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v43 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_43 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: v61 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_61 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':chrome: latest Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=chrome_latest -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':ie: v8 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=ie_8 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':ie: v9 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=ie_9 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':ie: v10 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=ie_10 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':ie: v11 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=ie_11 -# env: -# HOST: 'localhost' # IE11 needs the host set to localhost for some reason!ß -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':edge: v14 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=edge_14 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':edge: v15 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=edge_15 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':safari: v6 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=safari_6 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':safari: v10 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=safari_10 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':safari: v13 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=safari_13 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':safari: v15 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=safari_15 -# concurrency: 5 -# concurrency_group: 'browserstack' + - label: ':chrome: v30 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_30 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v32 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_32 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v34 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_34 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v36 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_36 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v38 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_38 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v40 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_40 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v42 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_42 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v43 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_43 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: v61 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_61 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':chrome: latest Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=chrome_latest + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':ie: v8 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=ie_8 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':ie: v9 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=ie_9 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':ie: v10 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=ie_10 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':ie: v11 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=ie_11 + env: + HOST: 'localhost' # IE11 needs the host set to localhost for some reason!ß + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':edge: v14 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=edge_14 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':edge: v15 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=edge_15 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':safari: v6 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=safari_6 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':safari: v10 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=safari_10 + concurrency: 5 + concurrency_group: 'browserstack' - - label: ':iphone: iOS 9 Browser tests' + - label: ':safari: v13 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 plugins: @@ -330,147 +300,160 @@ steps: verbose: true command: - --farm=bs - - --browser=iphone_6s + - --browser=safari_13 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':safari: v15 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=safari_15 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':iphone: iOS 10.3 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=iphone_7 env: HOST: "bs-local.com" concurrency: 5 concurrency_group: 'browserstack' -# - label: ':iphone: iOS 10.3 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=iphone_7 -# env: -# HOST: "bs-local.com" -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':iphone: iOS 15.4 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=iphone_13 -# env: -# HOST: "bs-local.com" -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':android: Google Nexus 5 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=android_nexus5 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':android: Samsung Galaxy S6 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=android_s6 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':android: Samsung Galaxy S7 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=android_s7 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':android: Samsung Galaxy S8 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=android_s8 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':firefox: v30 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=firefox_30 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':firefox: v56 Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=firefox_56 -# concurrency: 5 -# concurrency_group: 'browserstack' -# -# - label: ':firefox: latest Browser tests' -# depends_on: "browser-maze-runner-image" -# timeout_in_minutes: 20 -# plugins: -# docker-compose#v3.9.0: -# pull: browser-maze-runner -# run: browser-maze-runner -# use-aliases: true -# verbose: true -# command: -# - --farm=bs -# - --browser=firefox_latest -# concurrency: 5 -# concurrency_group: 'browserstack' + - label: ':iphone: iOS 15.4 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=iphone_13 + env: + HOST: "bs-local.com" + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':android: Google Nexus 5 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_nexus5 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':android: Samsung Galaxy S6 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_s6 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':android: Samsung Galaxy S7 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_s7 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':android: Samsung Galaxy S8 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=android_s8 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':firefox: v30 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=firefox_30 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':firefox: v56 Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=firefox_56 + concurrency: 5 + concurrency_group: 'browserstack' + + - label: ':firefox: latest Browser tests' + depends_on: "browser-maze-runner-image" + timeout_in_minutes: 20 + plugins: + docker-compose#v3.9.0: + pull: browser-maze-runner + run: browser-maze-runner + use-aliases: true + verbose: true + command: + - --farm=bs + - --browser=firefox_latest + concurrency: 5 + concurrency_group: 'browserstack' diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 741f65ce3d..1415073109 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -60,110 +60,110 @@ steps: commit: '${BUILDKITE_COMMIT}' message: '${BUILDKITE_MESSAGE}' async: true -# -# - label: 'Trigger Node pipeline' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# depends_on: 'package-js' -# trigger: 'bugsnag-js-node' -# build: -# branch: '${BUILDKITE_BRANCH}' -# commit: '${BUILDKITE_COMMIT}' -# message: '${BUILDKITE_MESSAGE}' -# async: true -# -# - label: 'Trigger Expo pipeline' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# depends_on: 'publish-js' -# trigger: 'bugsnag-expo' -# build: -# env: -# BUGSNAG_JS_BRANCH: '${BUILDKITE_BRANCH}' -# BUGSNAG_JS_COMMIT: '${BUILDKITE_COMMIT}' -# # a branch name that's safe to use as a docker cache identifier -# BUGSNAG_JS_CACHE_SAFE_BRANCH_NAME: '${BRANCH_NAME}' -# -# - label: 'Trigger React Native pipeline' -# depends_on: -# - 'publish-js' -# - 'android-builder-base' -# trigger: 'bugsnag-js-react-native' -# build: -# branch: '${BUILDKITE_BRANCH}' -# commit: '${BUILDKITE_COMMIT}' -# message: '${BUILDKITE_MESSAGE}' -# async: true -# -# - label: 'Trigger React Native CLI pipeline' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# depends_on: -# - 'publish-js' -# - 'android-builder-base' -# trigger: 'bugsnag-js-react-native-cli' -# build: -# branch: '${BUILDKITE_BRANCH}' -# commit: '${BUILDKITE_COMMIT}' -# message: '${BUILDKITE_MESSAGE}' -# async: true -# -# - label: ':aws-lambda: AWS Lambda tests' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# timeout_in_minutes: 35 -# agents: -# queue: 'opensource-mac-cocoa-10.15' -# commands: -# # force the NPM registry as the default on CI is artifactory, which can't -# # currently install from our lockfile -# - npm ci --registry https://registry.npmjs.org -# - cd test/aws-lambda -# - bundle install -# - bundle exec maze-runner -# -# # -# # Core tests and checks -# # -# - label: ':docker: Build CI image' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# key: 'ci-image' -# depends_on: 'package-js' -# timeout_in_minutes: 20 -# plugins: -# - artifacts#v1.5.0: -# download: min_packages.tar -# - docker-compose#v3.9.0: -# build: -# - ci -# image-repository: 855461928731.dkr.ecr.us-west-1.amazonaws.com/js -# cache-from: -# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} -# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base -# - docker-compose#v3.9.0: -# push: -# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} -# - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base -# -# - label: 'Lint' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# depends_on: 'ci-image' -# timeout_in_minutes: 10 -# plugins: -# docker-compose#v3.9.0: -# run: ci -# command: 'npm run test:lint' -# -# - label: 'Unit tests' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# depends_on: 'ci-image' -# timeout_in_minutes: 10 -# plugins: -# docker-compose#v3.9.0: -# run: ci -# command: 'npm run test:unit' -# -# - label: 'Type checks/tests' -# if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" -# depends_on: 'ci-image' -# timeout_in_minutes: 10 -# plugins: -# docker-compose#v3.9.0: -# run: ci -# command: 'npm run test:types' + + - label: 'Trigger Node pipeline' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + depends_on: 'package-js' + trigger: 'bugsnag-js-node' + build: + branch: '${BUILDKITE_BRANCH}' + commit: '${BUILDKITE_COMMIT}' + message: '${BUILDKITE_MESSAGE}' + async: true + + - label: 'Trigger Expo pipeline' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + depends_on: 'publish-js' + trigger: 'bugsnag-expo' + build: + env: + BUGSNAG_JS_BRANCH: '${BUILDKITE_BRANCH}' + BUGSNAG_JS_COMMIT: '${BUILDKITE_COMMIT}' + # a branch name that's safe to use as a docker cache identifier + BUGSNAG_JS_CACHE_SAFE_BRANCH_NAME: '${BRANCH_NAME}' + + - label: 'Trigger React Native pipeline' + depends_on: + - 'publish-js' + - 'android-builder-base' + trigger: 'bugsnag-js-react-native' + build: + branch: '${BUILDKITE_BRANCH}' + commit: '${BUILDKITE_COMMIT}' + message: '${BUILDKITE_MESSAGE}' + async: true + + - label: 'Trigger React Native CLI pipeline' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + depends_on: + - 'publish-js' + - 'android-builder-base' + trigger: 'bugsnag-js-react-native-cli' + build: + branch: '${BUILDKITE_BRANCH}' + commit: '${BUILDKITE_COMMIT}' + message: '${BUILDKITE_MESSAGE}' + async: true + + - label: ':aws-lambda: AWS Lambda tests' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + timeout_in_minutes: 35 + agents: + queue: 'opensource-mac-cocoa-10.15' + commands: + # force the NPM registry as the default on CI is artifactory, which can't + # currently install from our lockfile + - npm ci --registry https://registry.npmjs.org + - cd test/aws-lambda + - bundle install + - bundle exec maze-runner + + # + # Core tests and checks + # + - label: ':docker: Build CI image' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + key: 'ci-image' + depends_on: 'package-js' + timeout_in_minutes: 20 + plugins: + - artifacts#v1.5.0: + download: min_packages.tar + - docker-compose#v3.9.0: + build: + - ci + image-repository: 855461928731.dkr.ecr.us-west-1.amazonaws.com/js + cache-from: + - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} + - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base + - docker-compose#v3.9.0: + push: + - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base-${BRANCH_NAME} + - ci:855461928731.dkr.ecr.us-west-1.amazonaws.com/js:ci-base + + - label: 'Lint' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + depends_on: 'ci-image' + timeout_in_minutes: 10 + plugins: + docker-compose#v3.9.0: + run: ci + command: 'npm run test:lint' + + - label: 'Unit tests' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + depends_on: 'ci-image' + timeout_in_minutes: 10 + plugins: + docker-compose#v3.9.0: + run: ci + command: 'npm run test:unit' + + - label: 'Type checks/tests' + if: build.env("BUILD_RN_WITH_LATEST_NATIVES") != "true" + depends_on: 'ci-image' + timeout_in_minutes: 10 + plugins: + docker-compose#v3.9.0: + run: ci + command: 'npm run test:types' From 3bb1345df0343c1dcd86f13e6a90a57c36ec8ecb Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 11:49:15 +0100 Subject: [PATCH 19/36] chore: remove iPhone 6s iOS9 --- .../features/fixtures/browser_errors.yml | 26 ------------------- test/browser/features/steps/browser_steps.rb | 2 +- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 66cd1c4a06..e28c05c171 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -255,32 +255,6 @@ safari_15: lineNumber: 18 columnNumber: 25 -iphone_6s: - handled: - errorClass: 'ReferenceError' - errorMessage: "Can't find variable: foo" - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token '!'. Parse error." - lineNumber: 18 - columnNumber: 0 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "Error: bad things" - lineNumber: 18 - columnNumber: 36 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: "Can't find variable: nevergoingtoexist_notinamillionyears" - lineNumber: 18 - columnNumber: 43 - unhandled_malformed_uri: - errorClass: 'Error' - errorMessage: "URIError: URI error" - lineNumber: 18 - columnNumber: 25 - iphone_7: handled: errorClass: 'ReferenceError' diff --git a/test/browser/features/steps/browser_steps.rb b/test/browser/features/steps/browser_steps.rb index 5ff2398510..254a97ae21 100644 --- a/test/browser/features/steps/browser_steps.rb +++ b/test/browser/features/steps/browser_steps.rb @@ -21,7 +21,7 @@ end When('the test should run in this browser') do - wait = Selenium::WebDriver::Wait.new(timeout: 15) + wait = Selenium::WebDriver::Wait.new(timeout: 10) wait.until { Maze.driver.find_element(id: 'bugsnag-test-should-run') && Maze.driver.find_element(id: 'bugsnag-test-should-run').text != 'PENDING' From e435f5b1065e86bee710a96a6accc8cb37de6c68 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Wed, 4 May 2022 11:49:22 +0100 Subject: [PATCH 20/36] [full ci] From 3340a40c12af11b85717de607749ef2c8f1d8e84 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 5 May 2022 08:15:14 +0100 Subject: [PATCH 21/36] dep: bump bugsnag-android dependency to v5.22.2 --- CHANGELOG.md | 4 +++- packages/react-native/android/build.gradle | 4 ++-- packages/react-native/prepare-android-vendor.config | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a0542aa66..7ff8759009 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,13 @@ ### Changed -- (react-native) Update bugsnag-android to v5.22.1 +- (react-native) Update bugsnag-android to v5.22.2 - Max reported threads can now be configured using manifest meta-data "com.bugsnag.android. MAX_REPORTED_THREADS" [bugsnag-android#1655](https://github.com/bugsnag/bugsnag-android/pull/1655) - Small improvement to startup performance (Bugsnag.start) [bugsnag-android#1648](https://github.com/bugsnag/bugsnag-android/pull/1648) + - Fixed NDK stack-traces for libraries linked after `Bugsnag.start` was called + [bugsnag-android#1671](https://github.com/bugsnag/bugsnag-android/pull/1671) ## v7.16.4 (2022-05-03) diff --git a/packages/react-native/android/build.gradle b/packages/react-native/android/build.gradle index fd07de2194..761dccbda7 100644 --- a/packages/react-native/android/build.gradle +++ b/packages/react-native/android/build.gradle @@ -39,8 +39,8 @@ android { } dependencies { - api "com.bugsnag:bugsnag-android:5.22.1" - api "com.bugsnag:bugsnag-plugin-react-native:5.22.1" + api "com.bugsnag:bugsnag-android:5.22.2" + api "com.bugsnag:bugsnag-plugin-react-native:5.22.2" implementation 'com.facebook.react:react-native:+' testImplementation "junit:junit:4.12" diff --git a/packages/react-native/prepare-android-vendor.config b/packages/react-native/prepare-android-vendor.config index 9037e792dd..9875595612 100644 --- a/packages/react-native/prepare-android-vendor.config +++ b/packages/react-native/prepare-android-vendor.config @@ -1,2 +1,2 @@ version -5.22.1 +5.22.2 From f7dfa43025bab6e5dc9bab36c18bacbf1f9ee2bd Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Thu, 5 May 2022 09:27:27 +0100 Subject: [PATCH 22/36] chore: update browser pipeline and remove unwanted tests --- .buildkite/browser-pipeline.yml | 98 ++------------------------------- 1 file changed, 4 insertions(+), 94 deletions(-) diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index 5a6350a4b1..a506db55a3 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -32,96 +32,6 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':chrome: v32 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_32 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v34 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_34 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v36 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_36 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v38 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_38 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v40 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_40 - concurrency: 5 - concurrency_group: 'browserstack' - - - label: ':chrome: v42 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 20 - plugins: - docker-compose#v3.9.0: - pull: browser-maze-runner - run: browser-maze-runner - use-aliases: true - verbose: true - command: - - --farm=bs - - --browser=chrome_42 - concurrency: 5 - concurrency_group: 'browserstack' - - label: ':chrome: v43 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 @@ -353,7 +263,7 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':android: Google Nexus 5 Browser tests' + - label: ':android: Android 4.4 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 plugins: @@ -368,7 +278,7 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':android: Samsung Galaxy S6 Browser tests' + - label: ':android: Android 5.0 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 plugins: @@ -383,7 +293,7 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':android: Samsung Galaxy S7 Browser tests' + - label: ':android: Android 6.0 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 plugins: @@ -398,7 +308,7 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':android: Samsung Galaxy S8 Browser tests' + - label: ':android: Android 7.0 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 plugins: From 1421b38d1fe275481e84ae57f5641d9cf61dfd3c Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Thu, 5 May 2022 09:27:31 +0100 Subject: [PATCH 23/36] [full ci] From c9c2c70f0b06f53471266d1102891f8623e6b683 Mon Sep 17 00:00:00 2001 From: Steve Kirkland-Walton Date: Thu, 5 May 2022 11:38:31 +0100 Subject: [PATCH 24/36] Reduce browser testing concurrency to 2 --- .buildkite/browser-pipeline.yml | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index 2fbad82a7f..607deeb71d 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -29,7 +29,7 @@ steps: command: - --farm=bs - --browser=chrome_43 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':chrome: v61 Browser tests' @@ -44,7 +44,7 @@ steps: command: - --farm=bs - --browser=chrome_61 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':chrome: latest Browser tests' @@ -59,7 +59,7 @@ steps: command: - --farm=bs - --browser=chrome_latest - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':ie: v8 Browser tests' @@ -74,7 +74,7 @@ steps: command: - --farm=bs - --browser=ie_8 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':ie: v9 Browser tests' @@ -89,7 +89,7 @@ steps: command: - --farm=bs - --browser=ie_9 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':ie: v10 Browser tests' @@ -104,7 +104,7 @@ steps: command: - --farm=bs - --browser=ie_10 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':ie: v11 Browser tests' @@ -121,7 +121,7 @@ steps: - --browser=ie_11 env: HOST: 'localhost' # IE11 needs the host set to localhost for some reason!ß - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':edge: v14 Browser tests' @@ -136,7 +136,7 @@ steps: command: - --farm=bs - --browser=edge_14 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':edge: v15 Browser tests' @@ -151,7 +151,7 @@ steps: command: - --farm=bs - --browser=edge_15 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':safari: v6 Browser tests' @@ -166,7 +166,7 @@ steps: command: - --farm=bs - --browser=safari_6 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':safari: v10 Browser tests' @@ -181,7 +181,7 @@ steps: command: - --farm=bs - --browser=safari_10 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':safari: v13 Browser tests' @@ -196,7 +196,7 @@ steps: command: - --farm=bs - --browser=safari_13 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':safari: v15 Browser tests' @@ -211,7 +211,7 @@ steps: command: - --farm=bs - --browser=safari_15 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':iphone: iOS 10.3 Browser tests' @@ -228,7 +228,7 @@ steps: - --browser=iphone_7 env: HOST: "bs-local.com" - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':android: Samsung Galaxy S8 Browser tests' @@ -243,7 +243,7 @@ steps: command: - --farm=bs - --browser=android_s8 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':firefox: v30 Browser tests' @@ -258,7 +258,7 @@ steps: command: - --farm=bs - --browser=firefox_30 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':firefox: v56 Browser tests' @@ -273,7 +273,7 @@ steps: command: - --farm=bs - --browser=firefox_56 - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' - label: ':firefox: latest Browser tests' @@ -288,5 +288,5 @@ steps: command: - --farm=bs - --browser=firefox_latest - concurrency: 5 + concurrency: 2 concurrency_group: 'browserstack' From 53f39992d964442ac424b539a41eb57fbe48c70a Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Thu, 5 May 2022 14:54:52 +0100 Subject: [PATCH 25/36] chore: remove unused browser_errors for chrome 32 - 42 --- .../features/fixtures/browser_errors.yml | 156 ------------------ 1 file changed, 156 deletions(-) diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index e28c05c171..01d84246c9 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -510,162 +510,6 @@ chrome_30: lineNumber: 18 columnNumber: 6 -chrome_32: - handled: - errorClass: 'ReferenceError' - errorMessage: 'foo is not defined' - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token !" - lineNumber: 18 - columnNumber: 13 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "bad things" - lineNumber: 18 - columnNumber: 13 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: nevergoingtoexist_notinamillionyears is not defined - lineNumber: 18 - columnNumber: 7 - unhandled_malformed_uri: - errorClass: 'URIError' - errorMessage: URI malformed - lineNumber: 18 - columnNumber: 7 - -chrome_34: - handled: - errorClass: 'ReferenceError' - errorMessage: 'foo is not defined' - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token !" - lineNumber: 18 - columnNumber: 13 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "bad things" - lineNumber: 18 - columnNumber: 13 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: nevergoingtoexist_notinamillionyears is not defined - lineNumber: 18 - columnNumber: 7 - unhandled_malformed_uri: - errorClass: 'URIError' - errorMessage: URI malformed - lineNumber: 18 - columnNumber: 7 - -chrome_36: - handled: - errorClass: 'ReferenceError' - errorMessage: 'foo is not defined' - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token !" - lineNumber: 18 - columnNumber: 13 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "bad things" - lineNumber: 18 - columnNumber: 13 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: nevergoingtoexist_notinamillionyears is not defined - lineNumber: 18 - columnNumber: 7 - unhandled_malformed_uri: - errorClass: 'URIError' - errorMessage: URI malformed - lineNumber: 18 - columnNumber: 7 - -chrome_38: - handled: - errorClass: 'ReferenceError' - errorMessage: 'foo is not defined' - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token !" - lineNumber: 18 - columnNumber: 13 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "bad things" - lineNumber: 18 - columnNumber: 13 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: nevergoingtoexist_notinamillionyears is not defined - lineNumber: 18 - columnNumber: 7 - unhandled_malformed_uri: - errorClass: 'URIError' - errorMessage: URI malformed - lineNumber: 18 - columnNumber: 7 - -chrome_40: - handled: - errorClass: 'ReferenceError' - errorMessage: 'foo is not defined' - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token !" - lineNumber: 18 - columnNumber: 13 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "bad things" - lineNumber: 18 - columnNumber: 13 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: nevergoingtoexist_notinamillionyears is not defined - lineNumber: 18 - columnNumber: 7 - unhandled_malformed_uri: - errorClass: 'URIError' - errorMessage: URI malformed - lineNumber: 18 - columnNumber: 7 - -chrome_42: - handled: - errorClass: 'ReferenceError' - errorMessage: 'foo is not defined' - unhandled_syntax: - errorClass: 'SyntaxError' - errorMessage: "Unexpected token !" - lineNumber: 18 - columnNumber: 13 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "bad things" - lineNumber: 18 - columnNumber: 13 - unhandled_undefined_function: - errorClass: 'ReferenceError' - errorMessage: nevergoingtoexist_notinamillionyears is not defined - lineNumber: 18 - columnNumber: 7 - unhandled_malformed_uri: - errorClass: 'URIError' - errorMessage: URI malformed - lineNumber: 18 - columnNumber: 7 - chrome_43: handled: errorClass: 'ReferenceError' From 1d0e174abebf01b9a2e3f7375c25f3f407862553 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Thu, 5 May 2022 14:54:58 +0100 Subject: [PATCH 26/36] [full ci] From 91ba00d9c4e3381be00da6974d8c3e9363f36f79 Mon Sep 17 00:00:00 2001 From: Josh Edney Date: Mon, 9 May 2022 08:45:06 +0100 Subject: [PATCH 27/36] [full ci] From 6d3f46540a8b2dc12917c33bf1144ded1b2ad973 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Wed, 11 May 2022 11:28:33 +0100 Subject: [PATCH 28/36] Set @bugsnag/core as an optional peer dependency --- CHANGELOG.md | 1 + packages/plugin-react-native-navigation/package.json | 5 +++++ packages/plugin-react-navigation/package.json | 5 +++++ packages/plugin-react/package.json | 5 +++++ packages/plugin-vue/package.json | 5 +++++ 5 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ff8759009..b9dfca05f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ [bugsnag-android#1648](https://github.com/bugsnag/bugsnag-android/pull/1648) - Fixed NDK stack-traces for libraries linked after `Bugsnag.start` was called [bugsnag-android#1671](https://github.com/bugsnag/bugsnag-android/pull/1671) +- (plugin-react|plugin-vue|plugin-react-navigation|plugin-react-native-navigation) Set `@bugsnag/core` to be an optional peer dependency to avoid unmet peer dependency warnings [#1735](https://github.com/bugsnag/bugsnag-js/pull/1735) ## v7.16.4 (2022-05-03) diff --git a/packages/plugin-react-native-navigation/package.json b/packages/plugin-react-native-navigation/package.json index 34f3026cc5..169c4cf9d1 100644 --- a/packages/plugin-react-native-navigation/package.json +++ b/packages/plugin-react-native-navigation/package.json @@ -27,6 +27,11 @@ "@bugsnag/core": "^7.0.0", "react-native-navigation": "2 - 7" }, + "peerDependenciesMeta": { + "@bugsnag/core": { + "optional": true + } + }, "scripts": { "test:types": "tsc -p tsconfig.json" } diff --git a/packages/plugin-react-navigation/package.json b/packages/plugin-react-navigation/package.json index 215c2a4b5d..302b0846ca 100644 --- a/packages/plugin-react-navigation/package.json +++ b/packages/plugin-react-navigation/package.json @@ -33,5 +33,10 @@ "peerDependencies": { "@bugsnag/core": "^7.0.0", "@react-navigation/native": "^5.0 || ^6.0" + }, + "peerDependenciesMeta": { + "@bugsnag/core": { + "optional": true + } } } diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index ffb9aec0d8..58b24726f5 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -28,5 +28,10 @@ }, "peerDependencies": { "@bugsnag/core": "^7.0.0" + }, + "peerDependenciesMeta": { + "@bugsnag/core": { + "optional": true + } } } diff --git a/packages/plugin-vue/package.json b/packages/plugin-vue/package.json index 4bedfa7137..99621e687c 100644 --- a/packages/plugin-vue/package.json +++ b/packages/plugin-vue/package.json @@ -28,5 +28,10 @@ }, "peerDependencies": { "@bugsnag/core": "^7.0.0" + }, + "peerDependenciesMeta": { + "@bugsnag/core": { + "optional": true + } } } From e79d261f5df6e6c57aa0032c667cf08b5efa584c Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 12 May 2022 09:58:39 +0100 Subject: [PATCH 29/36] dep: bump bugsnag-android dependency to v5.22.3 --- CHANGELOG.md | 8 +++++++- packages/react-native/android/build.gradle | 4 ++-- packages/react-native/prepare-android-vendor.config | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ff8759009..c0d6baf044 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,19 @@ ### Changed -- (react-native) Update bugsnag-android to v5.22.2 +- (react-native) Update bugsnag-android to v5.22.3 - Max reported threads can now be configured using manifest meta-data "com.bugsnag.android. MAX_REPORTED_THREADS" [bugsnag-android#1655](https://github.com/bugsnag/bugsnag-android/pull/1655) - Small improvement to startup performance (Bugsnag.start) [bugsnag-android#1648](https://github.com/bugsnag/bugsnag-android/pull/1648) - Fixed NDK stack-traces for libraries linked after `Bugsnag.start` was called [bugsnag-android#1671](https://github.com/bugsnag/bugsnag-android/pull/1671) + - Fixed concurrency bug that could be triggered via the React Native plugin + [bugsnag-android#1679](https://github.com/bugsnag/bugsnag-android/pull/1679) + - Correctly report `device.locationStatus` on Android 12 onwards using `LocationManager.isLocationEnabled` + [bugsnag-android#1683](https://github.com/bugsnag/bugsnag-android/pull/1683) + - Small performance improvements to `Bugnag.start` + [bugsnag-android#1680](https://github.com/bugsnag/bugsnag-android/pull/1680) ## v7.16.4 (2022-05-03) diff --git a/packages/react-native/android/build.gradle b/packages/react-native/android/build.gradle index 761dccbda7..1abc83e067 100644 --- a/packages/react-native/android/build.gradle +++ b/packages/react-native/android/build.gradle @@ -39,8 +39,8 @@ android { } dependencies { - api "com.bugsnag:bugsnag-android:5.22.2" - api "com.bugsnag:bugsnag-plugin-react-native:5.22.2" + api "com.bugsnag:bugsnag-android:5.22.3" + api "com.bugsnag:bugsnag-plugin-react-native:5.22.3" implementation 'com.facebook.react:react-native:+' testImplementation "junit:junit:4.12" diff --git a/packages/react-native/prepare-android-vendor.config b/packages/react-native/prepare-android-vendor.config index 9875595612..ef078aa15b 100644 --- a/packages/react-native/prepare-android-vendor.config +++ b/packages/react-native/prepare-android-vendor.config @@ -1,2 +1,2 @@ version -5.22.2 +5.22.3 From 1734b95e32965087a34041b4e06e471cff621f1d Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Tue, 17 May 2022 14:51:02 +0100 Subject: [PATCH 30/36] add early check for undefined api key when creating client --- CHANGELOG.md | 1 + packages/electron/src/client/main.js | 5 +++++ .../electron/src/client/test/client.test-main.ts | 13 +++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 packages/electron/src/client/test/client.test-main.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 60477e3541..3821380b28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - Small performance improvements to `Bugnag.start` [bugsnag-android#1680](https://github.com/bugsnag/bugsnag-android/pull/1680) - (plugin-react|plugin-vue|plugin-react-navigation|plugin-react-native-navigation) Set `@bugsnag/core` to be an optional peer dependency to avoid unmet peer dependency warnings [#1735](https://github.com/bugsnag/bugsnag-js/pull/1735) +- (electron) Improved error message when no apiKey is provided to Bugsnag.start() [#1738](https://github.com/bugsnag/bugsnag-js/pull/1738) ## v7.16.4 (2022-05-03) diff --git a/packages/electron/src/client/main.js b/packages/electron/src/client/main.js index 4effd5ebd0..8599cd7dd0 100644 --- a/packages/electron/src/client/main.js +++ b/packages/electron/src/client/main.js @@ -16,6 +16,11 @@ const { schema } = require('../config/main') Event.__type = 'electronnodejs' module.exports = (opts) => { + // Sanity check api key has been provided + if (typeof opts.apiKey !== 'string') { + throw new Error('No Bugsnag API Key set') + } + const filestore = new FileStore( opts.apiKey, electron.app.getPath('userCache'), diff --git a/packages/electron/src/client/test/client.test-main.ts b/packages/electron/src/client/test/client.test-main.ts new file mode 100644 index 0000000000..a3f2b27412 --- /dev/null +++ b/packages/electron/src/client/test/client.test-main.ts @@ -0,0 +1,13 @@ +import createClient from '../main' + +describe('@bugsnag/electron client', () => { + describe('createClient', () => { + it('throws an error when an apiKey is not provided', () => { + expect( + () => { + createClient({}) + } + ).toThrowError('No Bugsnag API Key set') + }) + }) +}) From a096e37b125d8c641fe857a035bbc6ca1e1dca0f Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Tue, 17 May 2022 16:14:38 +0100 Subject: [PATCH 31/36] add maxEvents error message and update tests --- CHANGELOG.md | 1 + .../plugin-simple-throttle/test/throttle.test.ts | 16 +++++++++++++--- packages/plugin-simple-throttle/throttle.js | 5 ++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60477e3541..667916d765 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - Small performance improvements to `Bugnag.start` [bugsnag-android#1680](https://github.com/bugsnag/bugsnag-android/pull/1680) - (plugin-react|plugin-vue|plugin-react-navigation|plugin-react-native-navigation) Set `@bugsnag/core` to be an optional peer dependency to avoid unmet peer dependency warnings [#1735](https://github.com/bugsnag/bugsnag-js/pull/1735) +- (plugin-simple-throttle) Warning message added when error handler has exceeded `maxEvents` [#1739](https://github.com/bugsnag/bugsnag-js/pull/1739) ## v7.16.4 (2022-05-03) diff --git a/packages/plugin-simple-throttle/test/throttle.test.ts b/packages/plugin-simple-throttle/test/throttle.test.ts index db1329fc86..4619463f5e 100644 --- a/packages/plugin-simple-throttle/test/throttle.test.ts +++ b/packages/plugin-simple-throttle/test/throttle.test.ts @@ -3,11 +3,21 @@ import plugin from '../' import Client from '@bugsnag/core/client' describe('plugin: throttle', () => { - it('prevents more than maxEvents being sent', () => { + describe('addOnError', () => { const payloads = [] const c = new Client({ apiKey: 'aaaa-aaaa-aaaa-aaaa' }, undefined, [plugin]) + const mockWarn = jest.fn(message => message) + c._logger.warn = mockWarn c._setDelivery(client => ({ sendEvent: (payload) => payloads.push(payload), sendSession: () => {} })) - for (let i = 0; i < 100; i++) c.notify(new Error('This is fail')) - expect(payloads.length).toBe(10) + + it('prevents more than maxEvents being sent', () => { + for (let i = 0; i < 100; i++) c.notify(new Error('This is fail')) + expect(payloads.length).toBe(10) + expect(mockWarn).toHaveBeenCalledTimes(90) + }) + + it('throws an appropriate error message', () => { + expect(mockWarn.mock.results[11].value).toBe('Cancelling event send due to maxEvents per session limit of 10 being reached') + }) }) }) diff --git a/packages/plugin-simple-throttle/throttle.js b/packages/plugin-simple-throttle/throttle.js index d1333b8b28..3de502ec61 100644 --- a/packages/plugin-simple-throttle/throttle.js +++ b/packages/plugin-simple-throttle/throttle.js @@ -12,7 +12,10 @@ module.exports = { // add onError hook client.addOnError((event) => { // have max events been sent already? - if (n >= client._config.maxEvents) return false + if (n >= client._config.maxEvents) { + client._logger.warn(`Cancelling event send due to maxEvents per session limit of ${client._config.maxEvents} being reached`) + return false + } n++ }) From 10490f68ec06c39e79f6ddfd49e6b7d023d11998 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Tue, 17 May 2022 16:19:37 +0100 Subject: [PATCH 32/36] Update packages/electron/src/client/main.js Co-authored-by: Joe Haines --- packages/electron/src/client/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/electron/src/client/main.js b/packages/electron/src/client/main.js index 8599cd7dd0..1966f63566 100644 --- a/packages/electron/src/client/main.js +++ b/packages/electron/src/client/main.js @@ -16,7 +16,8 @@ const { schema } = require('../config/main') Event.__type = 'electronnodejs' module.exports = (opts) => { - // Sanity check api key has been provided + // check api key has been provided as we need it to create the FileStore + // which happens before the API key is validated if (typeof opts.apiKey !== 'string') { throw new Error('No Bugsnag API Key set') } From cc27e07d1d2c6d1a9bb40ee3276060cf80d90ae2 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Tue, 17 May 2022 17:02:50 +0100 Subject: [PATCH 33/36] clean up throttle test --- .../test/throttle.test.ts | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/plugin-simple-throttle/test/throttle.test.ts b/packages/plugin-simple-throttle/test/throttle.test.ts index 4619463f5e..32589456f4 100644 --- a/packages/plugin-simple-throttle/test/throttle.test.ts +++ b/packages/plugin-simple-throttle/test/throttle.test.ts @@ -3,21 +3,19 @@ import plugin from '../' import Client from '@bugsnag/core/client' describe('plugin: throttle', () => { - describe('addOnError', () => { - const payloads = [] - const c = new Client({ apiKey: 'aaaa-aaaa-aaaa-aaaa' }, undefined, [plugin]) - const mockWarn = jest.fn(message => message) - c._logger.warn = mockWarn - c._setDelivery(client => ({ sendEvent: (payload) => payloads.push(payload), sendSession: () => {} })) + const payloads = [] + const c = new Client({ apiKey: 'aaaa-aaaa-aaaa-aaaa' }, undefined, [plugin]) + const mockWarn = jest.fn() + c._logger.warn = mockWarn + c._setDelivery(client => ({ sendEvent: (payload) => payloads.push(payload), sendSession: () => {} })) - it('prevents more than maxEvents being sent', () => { - for (let i = 0; i < 100; i++) c.notify(new Error('This is fail')) - expect(payloads.length).toBe(10) - expect(mockWarn).toHaveBeenCalledTimes(90) - }) + it('prevents more than maxEvents being sent', () => { + for (let i = 0; i < 100; i++) c.notify(new Error('This is fail')) + expect(payloads.length).toBe(10) + expect(mockWarn).toHaveBeenCalledTimes(90) + }) - it('throws an appropriate error message', () => { - expect(mockWarn.mock.results[11].value).toBe('Cancelling event send due to maxEvents per session limit of 10 being reached') - }) + it('logs an appropriate error message', () => { + expect(mockWarn).toHaveBeenCalledWith('Cancelling event send due to maxEvents per session limit of 10 being reached') }) }) From 5e2ea68340498febab595dc60b2b6f2820b037a0 Mon Sep 17 00:00:00 2001 From: Steve Kirkland-Walton Date: Tue, 17 May 2022 18:17:02 +0100 Subject: [PATCH 34/36] Increase BrowserStack slots to 24 --- .buildkite/react-native-cli-pipeline.yml | 40 ++++++++++++------------ .buildkite/react-native-pipeline.yml | 32 +++++++++---------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.buildkite/react-native-cli-pipeline.yml b/.buildkite/react-native-cli-pipeline.yml index de2be4a8c5..5674e5785d 100644 --- a/.buildkite/react-native-cli-pipeline.yml +++ b/.buildkite/react-native-cli-pipeline.yml @@ -487,7 +487,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -508,7 +508,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -529,7 +529,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -550,7 +550,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -571,7 +571,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -592,7 +592,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -613,7 +613,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -634,7 +634,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -655,7 +655,7 @@ steps: - --device=ANDROID_11_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -676,7 +676,7 @@ steps: - --device=ANDROID_12_0 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -700,7 +700,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -721,7 +721,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -742,7 +742,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -763,7 +763,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -784,7 +784,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -805,7 +805,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -826,7 +826,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -847,7 +847,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -868,7 +868,7 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -889,6 +889,6 @@ steps: - --device=IOS_14 - --a11y-locator - features/run-app-tests - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager diff --git a/.buildkite/react-native-pipeline.yml b/.buildkite/react-native-pipeline.yml index b899fdb001..ebbb9e75a9 100644 --- a/.buildkite/react-native-pipeline.yml +++ b/.buildkite/react-native-pipeline.yml @@ -270,7 +270,7 @@ steps: - --fail-fast env: SKIP_NAVIGATION_SCENARIOS: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -294,7 +294,7 @@ steps: - --fail-fast env: SKIP_NAVIGATION_SCENARIOS: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -317,7 +317,7 @@ steps: - --fail-fast env: SKIP_NAVIGATION_SCENARIOS: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -341,7 +341,7 @@ steps: env: SKIP_NAVIGATION_SCENARIOS: "true" HERMES: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -365,7 +365,7 @@ steps: env: SKIP_NAVIGATION_SCENARIOS: "true" HERMES: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -389,7 +389,7 @@ steps: - --fail-fast env: SKIP_NAVIGATION_SCENARIOS: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -414,7 +414,7 @@ steps: env: SKIP_NAVIGATION_SCENARIOS: "true" HERMES: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -439,7 +439,7 @@ steps: env: SKIP_NAVIGATION_SCENARIOS: "true" HERMES: "true" - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -461,7 +461,7 @@ steps: - --a11y-locator - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -486,7 +486,7 @@ steps: - --appium-version=1.18.0 - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -508,7 +508,7 @@ steps: - --a11y-locator - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -531,7 +531,7 @@ steps: - --appium-version=1.21.0 - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -553,7 +553,7 @@ steps: - --a11y-locator - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -578,7 +578,7 @@ steps: - --a11y-locator - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -600,7 +600,7 @@ steps: - --a11y-locator - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager @@ -625,6 +625,6 @@ steps: - --appium-version=1.18.0 - --fail-fast - features/navigation.feature - concurrency: 9 + concurrency: 24 concurrency_group: 'browserstack-app' concurrency_method: eager From f087eaef7bf0a16761c226bf17624c7db219e52c Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Wed, 18 May 2022 11:31:32 +0100 Subject: [PATCH 35/36] update changelog with new version number --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c73cc44a92..a28ad288b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## TBD +## v7.16.5 (2022-05-18) ### Changed From 410269161a3ba48e505cbca72398a49809dad445 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Wed, 18 May 2022 11:37:33 +0100 Subject: [PATCH 36/36] move react-native-cli change to version v7.16.5 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a28ad288b1..7206e58087 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ [bugsnag-android#1683](https://github.com/bugsnag/bugsnag-android/pull/1683) - Small performance improvements to `Bugnag.start` [bugsnag-android#1680](https://github.com/bugsnag/bugsnag-android/pull/1680) +- (react-native-cli) Fix 'insert' command with RN 0.68+ [#1726](https://github.com/bugsnag/bugsnag-js/pull/1726) - (plugin-react|plugin-vue|plugin-react-navigation|plugin-react-native-navigation) Set `@bugsnag/core` to be an optional peer dependency to avoid unmet peer dependency warnings [#1735](https://github.com/bugsnag/bugsnag-js/pull/1735) - (electron) Improved error message when no apiKey is provided to Bugsnag.start() [#1738](https://github.com/bugsnag/bugsnag-js/pull/1738) - (plugin-simple-throttle) Warning message added when error handler has exceeded `maxEvents` [#1739](https://github.com/bugsnag/bugsnag-js/pull/1739) @@ -31,7 +32,6 @@ - (plugin-react) Add 'children' prop to BugsnagErrorBoundary [#1723](https://github.com/bugsnag/bugsnag-js/pull/1723) - (react-native) Fix reporting of `RCTFatal()` crashes on iOS. [#1719](https://github.com/bugsnag/bugsnag-js/pull/1719) -- (react-native-cli) Fix 'insert' command with RN 0.68+ [#1726](https://github.com/bugsnag/bugsnag-js/pull/1726) - (plugin-electron-app-breadcrumbs) Fix a TypeError caused by using a BrowserWindow object after it is destroyed [#1722](https://github.com/bugsnag/bugsnag-js/pull/1722) ## v7.16.3 (2022-04-05)