Skip to content

Commit d9dc89f

Browse files
sam-gcyuchenshi
andauthored
[Auth] Fix Firefox Indexed DB workaround issue for v9. Update test to workaround same issue in v8 (#5062)
* Fix indexed DB persistence bug in Firefox (v9 only * Formatting * Update packages-exp/auth-exp/test/integration/webdriver/util/test_runner.ts Co-authored-by: Yuchen Shi <[email protected]> * Update packages-exp/auth-exp/test/integration/webdriver/util/test_runner.ts Co-authored-by: Yuchen Shi <[email protected]> Co-authored-by: Yuchen Shi <[email protected]>
1 parent a5c2974 commit d9dc89f

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

packages-exp/auth-exp/src/platform_browser/persistence/indexed_db.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,10 @@ export function _openDatabase(): Promise<IDBDatabase> {
113113
// https://github.com/firebase/firebase-js-sdk/issues/634
114114

115115
if (!db.objectStoreNames.contains(DB_OBJECTSTORE_NAME)) {
116+
// Need to close the database or else you get a `blocked` event
117+
db.close();
116118
await _deleteDatabase();
117-
return _openDatabase();
119+
resolve(await _openDatabase());
118120
} else {
119121
resolve(db);
120122
}

packages-exp/auth-exp/test/integration/webdriver/persistence.test.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ async function testPersistedUser() {
4747
};
4848
}
4949

50-
browserDescribe('WebDriver persistence test', driver => {
50+
browserDescribe('WebDriver persistence test', (driver, browser) => {
5151
const fullPersistenceKey = `firebase:authUser:${API_KEY}:[DEFAULT]`;
5252
context('default persistence hierarchy (indexedDB > localStorage)', () => {
5353
it('stores user in indexedDB by default', async () => {
@@ -381,6 +381,12 @@ browserDescribe('WebDriver persistence test', driver => {
381381
});
382382

383383
it('stays logged in when switching from legacy SDK and then back (no indexedDB support)', async () => {
384+
// Skip this test if running in Firefox. The Legacy SDK incorrectly
385+
// implements the db delete + reopen workaround for Firefox.
386+
if (browser === 'firefox') {
387+
return;
388+
}
389+
384390
await driver.webDriver.navigate().refresh();
385391
// Simulate browsers that do not support indexedDB.
386392
await driver.webDriver.executeScript('delete window.indexedDB');

packages-exp/auth-exp/test/integration/webdriver/util/test_runner.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { AuthDriver } from './auth_driver';
3131
*/
3232

3333
interface TempSuite {
34-
generator: (driver: AuthDriver) => void;
34+
generator: (driver: AuthDriver, browser: string) => void;
3535
title: string;
3636
}
3737

@@ -45,7 +45,7 @@ const SUITES: TempSuite[] = [];
4545
/** Main entry point for all WebDriver tests */
4646
export function browserDescribe(
4747
title: string,
48-
generator: (driver: AuthDriver) => void
48+
generator: (driver: AuthDriver, browser: string) => void
4949
): void {
5050
SUITES.push({
5151
title,
@@ -75,7 +75,7 @@ setTimeout(() => {
7575
});
7676

7777
for (const { title, generator } of SUITES) {
78-
describe(title, () => generator(DRIVER));
78+
describe(title, () => generator(DRIVER, browser));
7979
}
8080
});
8181
}

0 commit comments

Comments
 (0)