From b463877a6d957430c920c1a390139132da9fe13a Mon Sep 17 00:00:00 2001 From: jake Date: Fri, 27 Feb 2026 13:18:39 +0300 Subject: [PATCH 1/5] feat: handle the error of the launchPersistentBrowserContext --- package.json | 6 +-- .../src/browser.context.service.ts | 15 +++++- packages/extensions/package.json | 2 +- yarn.lock | 46 ++++++++++++++++++- 4 files changed, 62 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 828a1189..6b1a7287 100644 --- a/package.json +++ b/package.json @@ -41,9 +41,9 @@ "branches": [ "main", { - "name": "develop", - "channel": "alpha", - "prerelease": "alpha" + "name": "fix-persist-browser-context", + "channel": "alpha-fix-br-ctx", + "prerelease": "alpha-fix-br-ctx" } ] }, diff --git a/packages/browser-service/src/browser.context.service.ts b/packages/browser-service/src/browser.context.service.ts index e8eb3c27..d6d538e6 100644 --- a/packages/browser-service/src/browser.context.service.ts +++ b/packages/browser-service/src/browser.context.service.ts @@ -81,15 +81,17 @@ export class BrowserContextService { } let attemptsLeft = 3; + let isContextLaunched = false; while (attemptsLeft > 0) { try { this.browserContext = await chromium.launchPersistentContext( browserContextPath, { ...this.options.browserOptions, - timeout: 5000, + timeout: 20000, }, ); + isContextLaunched = true; break; } catch (er) { attemptsLeft--; @@ -98,6 +100,17 @@ export class BrowserContextService { } } + if (!isContextLaunched) { + await fs.rm(browserContextPath, { recursive: true, force: true }); + this.browserContext = await chromium.launchPersistentContext( + browserContextPath, + { + ...this.options.browserOptions, + timeout: 20000, + }, + ); + } + this.browserContext.on('page', async (page) => { page.once('crash', () => this.logger.error(`Page ${page.url()} crashed`)); }); diff --git a/packages/extensions/package.json b/packages/extensions/package.json index abe8bfcc..0f8db630 100644 --- a/packages/extensions/package.json +++ b/packages/extensions/package.json @@ -30,7 +30,7 @@ }, "dependencies": { "@nestjs/common": "^10.0.0", - "axios": "^1.10.0", + "axios": "^1.13.5", "reflect-metadata": "^0.1.13", "rxjs": "^7.5.6", "unzipper": "^0.10.11" diff --git a/yarn.lock b/yarn.lock index 8fe8e4e3..5aa4db8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2723,6 +2723,15 @@ axios@^1.10.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.13.5: + version "1.13.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" + integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== + dependencies: + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^1.1.0" + babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" @@ -3761,6 +3770,16 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: dependencies: es-errors "^1.3.0" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + esbuild@~0.25.0: version "0.25.4" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.4.tgz#bb9a16334d4ef2c33c7301a924b8b863351a0854" @@ -4254,6 +4273,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + follow-redirects@^1.15.6: version "1.15.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" @@ -4294,6 +4318,17 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + formidable@^2.1.2: version "2.1.5" resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.5.tgz#dd7ef4d55c164afaf9b6eb472bfd04b02d66d2dd" @@ -4422,7 +4457,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== @@ -4645,11 +4680,18 @@ has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-symbols@^1.1.0: +has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" From 245ff2a3785adc5ade0930a91389b08d002fe95c Mon Sep 17 00:00:00 2001 From: jake Date: Fri, 27 Feb 2026 13:31:12 +0300 Subject: [PATCH 2/5] chore: roll back the axios upgrade --- packages/extensions/package.json | 2 +- yarn.lock | 46 ++------------------------------ 2 files changed, 3 insertions(+), 45 deletions(-) diff --git a/packages/extensions/package.json b/packages/extensions/package.json index 0f8db630..abe8bfcc 100644 --- a/packages/extensions/package.json +++ b/packages/extensions/package.json @@ -30,7 +30,7 @@ }, "dependencies": { "@nestjs/common": "^10.0.0", - "axios": "^1.13.5", + "axios": "^1.10.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.5.6", "unzipper": "^0.10.11" diff --git a/yarn.lock b/yarn.lock index 5aa4db8b..8fe8e4e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2723,15 +2723,6 @@ axios@^1.10.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^1.13.5: - version "1.13.5" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" - integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== - dependencies: - follow-redirects "^1.15.11" - form-data "^4.0.5" - proxy-from-env "^1.1.0" - babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" @@ -3770,16 +3761,6 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: dependencies: es-errors "^1.3.0" -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - esbuild@~0.25.0: version "0.25.4" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.4.tgz#bb9a16334d4ef2c33c7301a924b8b863351a0854" @@ -4273,11 +4254,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.15.11: - version "1.15.11" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - follow-redirects@^1.15.6: version "1.15.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" @@ -4318,17 +4294,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - formidable@^2.1.2: version "2.1.5" resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.5.tgz#dd7ef4d55c164afaf9b6eb472bfd04b02d66d2dd" @@ -4457,7 +4422,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== @@ -4680,18 +4645,11 @@ has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-symbols@^1.0.3, has-symbols@^1.1.0: +has-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" From 019e03f7fc577d4c3f6141c1e81eb5377521e25c Mon Sep 17 00:00:00 2001 From: jake Date: Fri, 27 Feb 2026 13:42:30 +0300 Subject: [PATCH 3/5] fix: some fixes --- .../src/browser.context.service.ts | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/packages/browser-service/src/browser.context.service.ts b/packages/browser-service/src/browser.context.service.ts index d6d538e6..5f390ee2 100644 --- a/packages/browser-service/src/browser.context.service.ts +++ b/packages/browser-service/src/browser.context.service.ts @@ -81,7 +81,6 @@ export class BrowserContextService { } let attemptsLeft = 3; - let isContextLaunched = false; while (attemptsLeft > 0) { try { this.browserContext = await chromium.launchPersistentContext( @@ -91,26 +90,23 @@ export class BrowserContextService { timeout: 20000, }, ); - isContextLaunched = true; break; } catch (er) { attemptsLeft--; - if (attemptsLeft == 0) - throw new Error(`Failed to launch persistent context: ${er}`); + if (attemptsLeft == 0) { + this.logger.error('Failed to launch persistent context'); + await fs.rm(browserContextPath, { recursive: true, force: true }); + this.browserContext = await chromium.launchPersistentContext( + browserContextPath, + { + ...this.options.browserOptions, + timeout: 20000, + }, + ); + } } } - if (!isContextLaunched) { - await fs.rm(browserContextPath, { recursive: true, force: true }); - this.browserContext = await chromium.launchPersistentContext( - browserContextPath, - { - ...this.options.browserOptions, - timeout: 20000, - }, - ); - } - this.browserContext.on('page', async (page) => { page.once('crash', () => this.logger.error(`Page ${page.url()} crashed`)); }); From dea0ad207b784178c8d024878562ed46193e4d80 Mon Sep 17 00:00:00 2001 From: jake Date: Fri, 27 Feb 2026 13:47:36 +0300 Subject: [PATCH 4/5] test: fix name of alpha branch --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6b1a7287..d3c89e03 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "branches": [ "main", { - "name": "fix-persist-browser-context", + "name": "fix-browser-context-launch", "channel": "alpha-fix-br-ctx", "prerelease": "alpha-fix-br-ctx" } From 78801702e52312e522e5dbf633a19c97e9f32e0c Mon Sep 17 00:00:00 2001 From: jake Date: Mon, 2 Mar 2026 13:14:59 +0300 Subject: [PATCH 5/5] fix: fix context --- packages/browser-service/src/browser.context.service.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/browser-service/src/browser.context.service.ts b/packages/browser-service/src/browser.context.service.ts index 5f390ee2..e4d93226 100644 --- a/packages/browser-service/src/browser.context.service.ts +++ b/packages/browser-service/src/browser.context.service.ts @@ -87,15 +87,18 @@ export class BrowserContextService { browserContextPath, { ...this.options.browserOptions, - timeout: 20000, + timeout: 10000, }, ); break; } catch (er) { attemptsLeft--; if (attemptsLeft == 0) { - this.logger.error('Failed to launch persistent context'); + this.logger.debug('Failed to launch persistent context'); await fs.rm(browserContextPath, { recursive: true, force: true }); + await fs.mkdir(browserContextPath, { + recursive: true, + }); this.browserContext = await chromium.launchPersistentContext( browserContextPath, {