mirror of
https://github.com/SoPat712/Speeder.git
synced 2026-10-08 11:05:02 -04:00
feat(subtitles): add nudge default state setting
This commit is contained in:
9 files changed
+125
-4
No files matched your search
@@ -112,4 +112,52 @@ describe("inject runtime", () => {
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 0));
|
||||
});
|
||||
|
||||
it("uses the configured subtitle nudge default until a video is toggled", async () => {
|
||||
await bootInject({
|
||||
sync: {
|
||||
enableSubtitleNudge: true,
|
||||
subtitleNudgeEnabledByDefault: false
|
||||
}
|
||||
});
|
||||
|
||||
const startSubtitleNudge = vi.fn();
|
||||
const video = {
|
||||
paused: false,
|
||||
playbackRate: 1.5,
|
||||
vsc: {
|
||||
startSubtitleNudge,
|
||||
stopSubtitleNudge: vi.fn(),
|
||||
subtitleNudgeEnabledOverride: null,
|
||||
subtitleNudgeIndicator: null,
|
||||
nudgeFlashIndicator: document.createElement("span")
|
||||
}
|
||||
};
|
||||
|
||||
expect(window.isSubtitleNudgeEnabledForVideo(video)).toBe(false);
|
||||
expect(window.setSubtitleNudgeEnabledForVideo(video, true)).toBe(true);
|
||||
expect(video.vsc.subtitleNudgeEnabledOverride).toBe(true);
|
||||
expect(window.isSubtitleNudgeEnabledForVideo(video)).toBe(true);
|
||||
expect(startSubtitleNudge).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("applies subtitle nudge default state from matching site rules", async () => {
|
||||
await bootInject();
|
||||
|
||||
window.tc.settings.enableSubtitleNudge = true;
|
||||
window.tc.settings.subtitleNudgeEnabledByDefault = true;
|
||||
window.tc.settings.siteRules = [
|
||||
{
|
||||
pattern: "example.org",
|
||||
subtitleNudgeEnabledByDefault: false
|
||||
}
|
||||
];
|
||||
window.captureSiteRuleBase();
|
||||
|
||||
expect(window.applySiteRuleOverrides()).toBe(false);
|
||||
expect(window.tc.settings.subtitleNudgeEnabledByDefault).toBe(false);
|
||||
|
||||
window.resetSettingsFromSiteRuleBase();
|
||||
expect(window.tc.settings.subtitleNudgeEnabledByDefault).toBe(true);
|
||||
});
|
||||
});
|
||||
@@ -29,6 +29,7 @@ describe("options page", () => {
|
||||
sync: {
|
||||
rememberSpeed: true,
|
||||
enabled: false,
|
||||
subtitleNudgeEnabledByDefault: false,
|
||||
popupMatchHoverControls: false,
|
||||
popupControllerButtons: ["rewind", "settings", "advance", "advance"],
|
||||
keyBindings: [
|
||||
@@ -39,6 +40,7 @@ describe("options page", () => {
|
||||
{
|
||||
pattern: "youtube.com",
|
||||
enabled: true,
|
||||
subtitleNudgeEnabledByDefault: false,
|
||||
showPopupControlBar: false,
|
||||
popupControllerButtons: ["advance", "settings", "advance"]
|
||||
}
|
||||
@@ -49,12 +51,22 @@ describe("options page", () => {
|
||||
expect(document.getElementById("app-version").textContent).toBe("5.1.7.0");
|
||||
expect(document.getElementById("rememberSpeed").checked).toBe(true);
|
||||
expect(document.getElementById("enabled").checked).toBe(false);
|
||||
expect(document.getElementById("subtitleNudgeEnabledByDefault").checked).toBe(
|
||||
false
|
||||
);
|
||||
expect(document.querySelector('.shortcut-row[data-action="pause"]')).not.toBe(
|
||||
null
|
||||
);
|
||||
expect(document.getElementById("siteRulesContainer").children.length).toBe(
|
||||
1
|
||||
);
|
||||
expect(document.querySelector(".site-rule .override-subtitleNudge").checked).toBe(
|
||||
true
|
||||
);
|
||||
expect(
|
||||
document.querySelector(".site-rule .site-subtitleNudgeEnabledByDefault")
|
||||
.checked
|
||||
).toBe(false);
|
||||
expect(globalThis.getPopupControlBarOrder()).toEqual(["rewind", "advance"]);
|
||||
});
|
||||
|
||||
@@ -159,6 +171,7 @@ describe("options page", () => {
|
||||
document.getElementById("controllerMarginTop").value = "250";
|
||||
document.getElementById("controllerMarginBottom").value = "-4";
|
||||
document.getElementById("enableSubtitleNudge").checked = true;
|
||||
document.getElementById("subtitleNudgeEnabledByDefault").checked = false;
|
||||
document.getElementById("subtitleNudgeInterval").value = "5";
|
||||
document.getElementById("popupMatchHoverControls").checked = false;
|
||||
document.getElementById("showPopupControlBar").checked = false;
|
||||
@@ -177,6 +190,10 @@ describe("options page", () => {
|
||||
rule.querySelector(".site-rememberSpeed").checked = true;
|
||||
rule.querySelector(".override-opacity").checked = true;
|
||||
rule.querySelector(".site-controllerOpacity").value = "0";
|
||||
rule.querySelector(".override-subtitleNudge").checked = true;
|
||||
rule.querySelector(".site-enableSubtitleNudge").checked = true;
|
||||
rule.querySelector(".site-subtitleNudgeEnabledByDefault").checked = false;
|
||||
rule.querySelector(".site-subtitleNudgeInterval").value = "75";
|
||||
rule.querySelector(".override-popup-controlbar").checked = true;
|
||||
rule.querySelector(".site-showPopupControlBar").checked = false;
|
||||
globalThis.populateControlBarZones(
|
||||
@@ -201,6 +218,7 @@ describe("options page", () => {
|
||||
expect(savedSettings.controllerOpacity).toBe(0);
|
||||
expect(savedSettings.controllerMarginTop).toBe(200);
|
||||
expect(savedSettings.controllerMarginBottom).toBe(0);
|
||||
expect(savedSettings.subtitleNudgeEnabledByDefault).toBe(false);
|
||||
expect(savedSettings.subtitleNudgeInterval).toBe(10);
|
||||
expect(savedSettings.showPopupControlBar).toBe(false);
|
||||
expect(savedSettings.popupMatchHoverControls).toBe(false);
|
||||
@@ -211,6 +229,9 @@ describe("options page", () => {
|
||||
pattern: "youtube.com",
|
||||
rememberSpeed: true,
|
||||
controllerOpacity: 0,
|
||||
enableSubtitleNudge: true,
|
||||
subtitleNudgeEnabledByDefault: false,
|
||||
subtitleNudgeInterval: 75,
|
||||
showPopupControlBar: false,
|
||||
popupControllerButtons: ["advance"]
|
||||
})
|
||||
|
||||
@@ -152,6 +152,16 @@ describe("shared helpers", () => {
|
||||
localSettings: null
|
||||
});
|
||||
|
||||
expect(
|
||||
importExportUtils.extractImportSettings({
|
||||
subtitleNudgeEnabledByDefault: false
|
||||
})
|
||||
).toEqual({
|
||||
isWrappedBackup: false,
|
||||
settings: { subtitleNudgeEnabledByDefault: false },
|
||||
localSettings: null
|
||||
});
|
||||
|
||||
expect(
|
||||
importExportUtils.extractImportSettings({ enabled: true })
|
||||
).toEqual({
|
||||
|
||||
Reference in new issue
Block a user