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:
@@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user