mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-24 16:49:26 +01:00
5b4e4d8f1a
* [PM-10669] Notification bar appears inconsistently after login * [PM-10669] Notification bar appears inconsistently after login * [PM-10669] Migrating work from POC branch into feature branch * [PM-10669] Incorporating styles for select element * [PM-10669] Incorporating styles for select element * [PM-10669] Fixing notification bar lifespan const * [PM-10669] Incorporating logic that conditionally loads specific bootstrap autofill feature files * [PM-10669] Incorporating logic to more smoothly handle transitioning between pages within the notification bar0 * [PM-10669] Incorporating logic to more smoothly handle transitioning between pages within the notification bar0 * [PM-10669] Incorporating logic to more smoothly handle transitioning between pages within the notification bar0 * [PM-10669] Incorporating a circle checkmark icon within the success message of the notification bar * [PM-10669] Fixing an issue where the notification bar can potentially load in between loading states for a tab * [PM-10669] Fixing an issue where the notification bar can potentially load in between loading states for a tab * [PM-10669] Fixing an issue where the notification bar can potentially load in between loading states for a tab * [PM-10669] Fixing an issue where the notification bar can potentially load in between loading states for a tab * [PM-10669] Fixing how we handle keyup events on the submit button * [PM-10669] Fixing how we handle keyup events on the submit button * [PM-10669] Fixing jest tests within notification bar * [PM-10669] Adding a jest tests to validate behavior within AutofillInit * [PM-10669] Adding a jest tests to validate behavior within AutofillInit * [PM-11170] Addressing test coverage within CollectAutofillContentService * [PM-11170] Addressing test coverage within CollectAutofillContentService * [PM-10669] Refactoring implementation * [PM-10669] Adding documentation to the methods incorporated within the AutofillOverlayContentService * [PM-10669] Incorporating jest tests for the AutofillOverlayContentService * [PM-10669] Migrating logic associated with the DomQuerySevice away from the CollectAutofillContentService * [PM-10669] Fixing required references to DomQueryService within the implementation * [PM-10669] Holding off on re-incorporating the userTreeWalkerStrategyFlag * [PM-10669] Incorporating jest tests for DomQueryService * [PM-10669] Adding jest test to validate changes within AutofillService * [PM-10669] Adding jest tests to validate changes within AutofillOverlayContentService * [PM-10669] Adding documentation to the OverlayNotificationsBackground class * [PM-10669] Adding documentation to the OverlayNotificationsBackground class * [PM-10669] Incorporating jest tests to validate the OverlayNotificationsBackground class * [PM-10669] Incorporating jest tests to validate the OverlayNotificationsBackground class * [PM-10669] Incorporating jest tests to validate the OverlayNotificationsBackground class * [PM-10669] Incorporating jest tests to validate the OverlayNotificationsBackground class * [PM-10669] Incorporating jest tests to validate the OverlayNotificationsBackground class * [PM-10669] Refactoring OverlayNotificationsContentService and incorporating logic that triggers a fade out of the notification bar on success of a saved password * [PM-10669] Refactoring OverlayNotificationsContentService and incorporating logic that triggers a fade out of the notification bar on success of a saved password * [PM-10669] Refactoring OverlayNotificationsContentService and incorporating logic that triggers a fade out of the notification bar on success of a saved password * [PM-10669] Finalizing jest tests for OverlayNotificationsContentService * [PM-10669] Finalizing jest tests for OverlayNotificationsContentService * [PM-10669] Adding new copy for the password saved/updated event in the notification bar * [PM-10669] Fixing visual presentation of sucesss message * [PM-10669] Fixing visual presentation of sucesss message * [PM-10418] Incorporating fallback for when we cannot capture the form button effectively * [PM-10669] Incorporating fixes for form submission button not being captured * [PM-10669] Incorporating a guard to ensure that an AJAX submission captures form data after the user has entered their credentials * [PM-10669] Incorporating a field qualification rule to ensure that we capture forms that are non-viewable on load * [PM-10669] Incorporating a document readyState listener to ensure that we populate the notification bar once the document body is loaded * [PM-10669] Incorporating a match pattern for subdomains of a main domain when filtering out web requests * [PM-10669] Incorporating a match pattern for subdomains of a main domain when filtering out web requests * [PM-10669] Incorporating a redundant methodology to capture `GET` requests that trigger after a form submisson * [PM-10669] Incorporating a redundant methodology to capture `GET` requests that trigger after a form submisson * [PM-10669] Adding jest tests to validate changes within OverlayNotificationsBackground * [PM-10669] Adjusting timeout for modified login credentials to ensure user can enter data on form * [PM-10669] Refining how we handle re-capturing user credentails on before request to better handle multi-part forms * [PM-10669] Refining how we handle re-capturing user credentails on before request to better handle multi-part forms * [PM-10669] Adjusting jest tests to ensure code coverage * [PM-10669] Fixing issues with Safari * [PM-10669] Fixing an invalid qualification rule * [PM-10669] Ensuring that we capture input changes correctly when a field is going from a hidden to non-hidden state * [PM-10669] Fixing jest tests within overlay content service * [PM-10669] Fixing jest tests within overlay content service * [PM-10669] Adding a jest test to validate changes to overlay content service
202 lines
3.7 KiB
TypeScript
202 lines
3.7 KiB
TypeScript
import "jest-preset-angular/setup-jest";
|
|
import { addCustomMatchers } from "@bitwarden/common/spec";
|
|
|
|
addCustomMatchers();
|
|
|
|
// Add chrome storage api
|
|
const QUOTA_BYTES = 10;
|
|
const storage = {
|
|
local: {
|
|
set: jest.fn(),
|
|
get: jest.fn(),
|
|
remove: jest.fn(),
|
|
QUOTA_BYTES,
|
|
getBytesInUse: jest.fn(),
|
|
clear: jest.fn(),
|
|
onChanged: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
},
|
|
session: {
|
|
set: jest.fn(),
|
|
get: jest.fn(),
|
|
has: jest.fn(),
|
|
remove: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const runtime = {
|
|
onMessage: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
sendMessage: jest.fn(),
|
|
getManifest: jest.fn(() => ({ version: 2 })),
|
|
getURL: jest.fn((path) => `chrome-extension://id/${path}`),
|
|
connect: jest.fn(),
|
|
onConnect: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
reload: jest.fn(),
|
|
};
|
|
|
|
const contextMenus = {
|
|
create: jest.fn(),
|
|
removeAll: jest.fn(),
|
|
};
|
|
|
|
const i18n = {
|
|
getMessage: jest.fn(),
|
|
getUILanguage: jest.fn(),
|
|
};
|
|
|
|
const tabs = {
|
|
get: jest.fn(),
|
|
executeScript: jest.fn(),
|
|
sendMessage: jest.fn(),
|
|
query: jest.fn(),
|
|
onActivated: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
onReplaced: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
onUpdated: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
onRemoved: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const scripting = {
|
|
executeScript: jest.fn(),
|
|
registerContentScripts: jest.fn(),
|
|
unregisterContentScripts: jest.fn(),
|
|
};
|
|
|
|
const windows = {
|
|
create: jest.fn(),
|
|
get: jest.fn(),
|
|
getCurrent: jest.fn(),
|
|
update: jest.fn(),
|
|
remove: jest.fn(),
|
|
onFocusChanged: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const port = {
|
|
onMessage: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
postMessage: jest.fn(),
|
|
};
|
|
|
|
const privacy = {
|
|
services: {
|
|
autofillAddressEnabled: {
|
|
get: jest.fn(),
|
|
set: jest.fn(),
|
|
},
|
|
autofillCreditCardEnabled: {
|
|
get: jest.fn(),
|
|
set: jest.fn(),
|
|
},
|
|
passwordSavingEnabled: {
|
|
get: jest.fn(),
|
|
set: jest.fn(),
|
|
},
|
|
},
|
|
};
|
|
|
|
const extension = {
|
|
getBackgroundPage: jest.fn(),
|
|
getViews: jest.fn(),
|
|
};
|
|
|
|
const offscreen = {
|
|
createDocument: jest.fn(),
|
|
closeDocument: jest.fn((callback) => {
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
}),
|
|
Reason: {
|
|
CLIPBOARD: "clipboard",
|
|
},
|
|
};
|
|
|
|
const permissions = {
|
|
contains: jest.fn((permissions, callback) => {
|
|
callback(true);
|
|
}),
|
|
};
|
|
|
|
const webNavigation = {
|
|
getFrame: jest.fn(),
|
|
getAllFrames: jest.fn(),
|
|
onCommitted: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
onCompleted: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const webRequest = {
|
|
onBeforeRequest: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
onBeforeRedirect: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
onCompleted: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const alarms = {
|
|
clear: jest.fn().mockImplementation((_name, callback) => callback(true)),
|
|
clearAll: jest.fn().mockImplementation((callback) => callback(true)),
|
|
create: jest.fn().mockImplementation((_name, _createInfo, callback) => callback()),
|
|
get: jest.fn().mockImplementation((_name, callback) => callback(null)),
|
|
getAll: jest.fn().mockImplementation((callback) => callback([])),
|
|
onAlarm: {
|
|
addListener: jest.fn(),
|
|
removeListener: jest.fn(),
|
|
},
|
|
};
|
|
|
|
// set chrome
|
|
global.chrome = {
|
|
i18n,
|
|
storage,
|
|
runtime,
|
|
contextMenus,
|
|
tabs,
|
|
scripting,
|
|
windows,
|
|
port,
|
|
privacy,
|
|
extension,
|
|
offscreen,
|
|
permissions,
|
|
webNavigation,
|
|
webRequest,
|
|
alarms,
|
|
} as any;
|