1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-12 06:13:38 +00:00

[PM-5881] Adjust usage of the chrome.extension.getViews API to ensure expected behavior in mv3 is not modified (#7842)

* [PM-5742] Rework Usage of Extension APIs that Cannot be Called with the Background Service Worker

* [PM-5742] Implementing jest tests for the updated BrowserApi methods

* [PM-5742] Implementing jest tests to validate logic within added API calls

* [PM-5742] Implementing jest tests to validate logic within added API calls

* [PM-5742] Fixing broken Jest tests

* [PM-5742] Fixing linter error

* [PM-5881] Adjust usage of the `chrome.extension.getViews` API to ensure expected behavior in manifest v3

* [PM-5881] Reworking how we handle early returns from `reloadOpenWindows`

* [PM-5881] Implementing jest test to validate changes within BrowserApi.reloadOpenWindows
This commit is contained in:
Cesar Gonzalez
2024-02-23 13:01:45 -06:00
committed by GitHub
parent 34a8d9af86
commit 968355d820
5 changed files with 59 additions and 48 deletions

View File

@@ -1,5 +1,7 @@
import { DeviceType } from "@bitwarden/common/enums";
import { BrowserApi } from "../browser/browser-api";
import BrowserPlatformUtilsService from "./browser-platform-utils.service";
describe("Browser Utils Service", () => {
@@ -91,41 +93,24 @@ describe("Browser Utils Service", () => {
});
describe("isViewOpen", () => {
beforeEach(() => {
globalThis.chrome = {
// eslint-disable-next-line
// @ts-ignore
extension: {
getViews: jest.fn(),
},
};
it("returns false if a heartbeat response is not received", async () => {
BrowserApi.sendMessageWithResponse = jest.fn().mockResolvedValueOnce(undefined);
const isViewOpen = await browserPlatformUtilsService.isViewOpen();
expect(isViewOpen).toBe(false);
});
it("returns true if the user is on Firefox and the sidebar is open", async () => {
chrome.extension.getViews = jest.fn().mockReturnValueOnce([window]);
jest
.spyOn(browserPlatformUtilsService, "getDevice")
.mockReturnValueOnce(DeviceType.FirefoxExtension);
it("returns true if a heartbeat response is received", async () => {
BrowserApi.sendMessageWithResponse = jest
.fn()
.mockImplementationOnce((subscriber) =>
Promise.resolve((subscriber === "checkVaultPopupHeartbeat") as any),
);
const result = await browserPlatformUtilsService.isViewOpen();
const isViewOpen = await browserPlatformUtilsService.isViewOpen();
expect(result).toBe(true);
});
it("returns true if a extension view is open as a tab", async () => {
chrome.extension.getViews = jest.fn().mockReturnValueOnce([window]);
const result = await browserPlatformUtilsService.isViewOpen();
expect(result).toBe(true);
});
it("returns false if no extension view is open", async () => {
chrome.extension.getViews = jest.fn().mockReturnValue([]);
const result = await browserPlatformUtilsService.isViewOpen();
expect(result).toBe(false);
expect(isViewOpen).toBe(true);
});
});
});