()
| 607 | }); |
| 608 | |
| 609 | assert.equal(result, 'ok'); |
| 610 | }; |
| 611 | |
| 612 | const readFirefoxSyncStorage = async (driver: WebDriver, key: string): Promise<unknown> => { |
| 613 | const result = await driver.executeAsyncScript( |
| 614 | (storageKey: string, done: (value: unknown) => void) => { |
| 615 | const browserApi = ( |
| 616 | globalThis as typeof globalThis & { |
| 617 | browser?: { |
| 618 | storage?: { |
| 619 | sync?: { |
| 620 | get: (keys: string[]) => Promise<Record<string, unknown>>; |
| 621 | }; |
| 622 | }; |
| 623 | }; |
| 624 | } |
| 625 | ).browser; |
| 626 | |
| 627 | browserApi?.storage?.sync |
| 628 | ?.get([storageKey]) |
| 629 | .then(items => { |
| 630 | done({ ok: true, value: items[storageKey] }); |
| 631 | return null; |
| 632 | }) |
| 633 | .catch((error: unknown) => { |
| 634 | done({ |
| 635 | error: error instanceof Error ? error.message : String(error), |
| 636 | ok: false, |
| 637 | }); |
| 638 | }); |
| 639 | }, |
| 640 | key |
| 641 | ); |
| 642 | |
| 643 | assert.equal( |
| 644 | isRecord(result) && result['ok'], |
| 645 | true, |
| 646 | `readFirefoxSyncStorage failed: ${String(result)}` |
| 647 | ); |
| 648 | return isRecord(result) ? result['value'] : undefined; |
| 649 | }; |
| 650 | |
| 651 | const seedFirefoxStorage = async ( |
| 652 | driver: WebDriver, |
| 653 | key: string, |
| 654 | value: unknown |
| 655 | ): Promise<void> => { |
| 656 | const result = await driver.executeAsyncScript( |
| 657 | (storageKey: string, storageValue: unknown, done: (value: unknown) => void) => { |
| 658 | const browserApi = ( |
| 659 | globalThis as typeof globalThis & { |
| 660 | browser?: { |
| 661 | storage?: { |
| 662 | local?: { |
| 663 | set: (items: Record<string, unknown>) => Promise<void>; |
| 664 | }; |
| 665 | }; |
no test coverage detected