Allow local log downloads when a rageshake URL is not configured. (#31716)

* Add support for storing debug logs locally and allowing local downloads.

* static

* Comprehensive testing for bug report flow.

* Driveby cleanup of typography

* fix i18n

* Improvements to UX

* More testing

* update snaps

* linting

* lint

* Fix feedback

* Fix boldnewss

* fix bold

* fix heading

* Increase test coverage

* remove focus

* Don't show the FAQ depending on whether you can submit feedback.

* move reset

* fix err

* Remove unused

* update snap

* Remove text

* Bumping up that coverage

* tidy

* lint

* update snap

* Use a const

* fix imports

* Remove import in e2e test

* whoops
This commit is contained in:
Will Hunt
2026-01-20 12:29:18 +00:00
committed by GitHub
parent b7a2e8c64e
commit a15efcc6d0
27 changed files with 692 additions and 162 deletions

View File

@@ -6,33 +6,54 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com
Please see LICENSE files in the repository root for full details.
*/
import { mocked } from "jest-mock";
import SdkConfig from "../../../src/SdkConfig";
import { shouldShowFeedback } from "../../../src/utils/Feedback";
import SettingsStore from "../../../src/settings/SettingsStore";
import { UIFeature } from "../../../src/settings/UIFeature";
import { BugReportEndpointURLLocal } from "../../../src/IConfigOptions";
jest.mock("../../../src/SdkConfig");
jest.mock("../../../src/settings/SettingsStore");
const realGetValue = SettingsStore.getValue;
describe("shouldShowFeedback", () => {
afterEach(() => {
SdkConfig.reset();
jest.restoreAllMocks();
});
it("should return false if bug_report_endpoint_url is falsey", () => {
mocked(SdkConfig).get.mockReturnValue({
bug_report_endpoint_url: null,
SdkConfig.put({
bug_report_endpoint_url: undefined,
});
expect(shouldShowFeedback()).toBeFalsy();
expect(shouldShowFeedback()).toEqual(false);
});
it("should return false if bug_report_endpoint_url is 'test'", () => {
SdkConfig.put({
bug_report_endpoint_url: BugReportEndpointURLLocal,
});
expect(shouldShowFeedback()).toEqual(false);
});
it("should return false if UIFeature.Feedback is disabled", () => {
mocked(SettingsStore).getValue.mockReturnValue(false);
expect(shouldShowFeedback()).toBeFalsy();
jest.spyOn(SettingsStore, "getValue").mockImplementation((key, ...params) => {
if (key === UIFeature.Feedback) {
return false;
}
return realGetValue(key, ...params);
});
expect(shouldShowFeedback()).toEqual(false);
});
it("should return true if bug_report_endpoint_url is set and UIFeature.Feedback is true", () => {
mocked(SdkConfig).get.mockReturnValue({
SdkConfig.put({
bug_report_endpoint_url: "https://rageshake.server",
});
mocked(SettingsStore).getValue.mockReturnValue(true);
expect(shouldShowFeedback()).toBeTruthy();
jest.spyOn(SettingsStore, "getValue").mockImplementation((key, ...params) => {
if (key === UIFeature.Feedback) {
return true;
}
return realGetValue(key, ...params);
});
expect(shouldShowFeedback()).toEqual(true);
});
});