add concurrent pages test

This commit is contained in:
Tommy D. Rossi
2025-11-22 12:28:21 +01:00
parent 2f1c2c781a
commit c658c153b2
5 changed files with 280 additions and 648 deletions
+12 -6
View File
@@ -29,7 +29,6 @@ const useExtensionStore = createStore<ExtensionState>((set) => ({
errorText: undefined,
}))
// @ts-ignore
globalThis.toggleExtensionForActiveTab = toggleExtensionForActiveTab
@@ -45,17 +44,17 @@ async function toggleExtensionForActiveTab(): Promise<{ isConnected: boolean; st
const check = () => {
const state = useExtensionStore.getState()
const tabInfo = state.connectedTabs.get(tab.id!)
// If we are connecting, wait
if (tabInfo?.state === 'connecting') {
setTimeout(check, 100)
return
}
// Also wait if global connection is reconnecting
if (state.connectionState === 'reconnecting') {
setTimeout(check, 100)
return
setTimeout(check, 100)
return
}
resolve()
@@ -65,13 +64,17 @@ async function toggleExtensionForActiveTab(): Promise<{ isConnected: boolean; st
const state = useExtensionStore.getState()
const isConnected = state.connectedTabs.has(tab.id) && state.connectedTabs.get(tab.id)?.state === 'connected'
return { isConnected, state }
}
// @ts-ignore
globalThis.getExtensionState = () => useExtensionStore.getState()
declare global {
var state: typeof useExtensionStore
var toggleExtensionForActiveTab: () => Promise<{ isConnected: boolean; state: ExtensionState }>
var getExtensionState: () => ExtensionState
}
async function resetDebugger() {
@@ -86,6 +89,9 @@ async function resetDebugger() {
resetDebugger()
chrome.runtime.onInstalled.addListener((details) => {
if (import.meta.env.TESTING) {
return
}
if (details.reason === 'install') {
void chrome.tabs.create({ url: 'welcome.html' })
}
+1 -1
View File
@@ -8,7 +8,7 @@
"rootDir": "src",
"outDir": "./dist/lib",
"resolveJsonModule": true,
"types": ["chrome"],
"types": ["chrome", "vite/client"],
"jsx": "react-jsx",
"jsxImportSource": "react",
"noEmit": true
+8 -2
View File
@@ -1,4 +1,3 @@
import { fileURLToPath } from 'url';
import { dirname, resolve } from 'path';
import { defineConfig } from 'vite';
@@ -7,6 +6,11 @@ import { viteStaticCopy } from 'vite-plugin-static-copy';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const defineEnv: Record<string, string> = {};
if (process.env.TESTING) {
defineEnv['import.meta.env.TESTING'] = 'true';
}
export default defineConfig({
plugins: [
viteStaticCopy({
@@ -26,6 +30,7 @@ export default defineConfig({
]
})
],
build: {
lib: {
entry: resolve(__dirname, 'src/background.ts'),
@@ -35,5 +40,6 @@ export default defineConfig({
outDir: 'dist',
emptyOutDir: false,
minify: false
}
},
define: defineEnv
});