Skip to content

Commit 9fa2aa3

Browse files
authored
feat(web): allow log downloads from the finished installation page (#3329)
2 parents 92b663e + e5ed4d3 commit 9fa2aa3

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

web/package/agama-web-ui.changes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
-------------------------------------------------------------------
2+
Tue Mar 24 14:45:14 UTC 2026 - David Diaz <dgonzalez@suse.com>
3+
4+
- Allow downloading logs and config from the installation finished
5+
page (gh#agama-project/agama#3329).
6+
17
-------------------------------------------------------------------
28
Thu Mar 19 16:35:10 UTC 2026 - David Diaz <dgonzalez@suse.com>
39

web/src/components/core/InstallationFinished.test.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,25 @@ describe("InstallationFinished", () => {
102102
screen.getByRole("button", { name: /Reboot/i });
103103
});
104104

105+
it("shows the installer options menu", async () => {
106+
installerRender(<InstallationFinished />);
107+
screen.getByRole("button", { name: /More installer options/i });
108+
});
109+
110+
it("includes an option for downloading the logs", async () => {
111+
const { user } = installerRender(<InstallationFinished />);
112+
await user.click(screen.getByRole("button", { name: /More installer options/i }));
113+
const menuitem = screen.getByRole("menuitem", { name: /Download logs/i });
114+
expect(menuitem).toHaveAttribute("download");
115+
});
116+
117+
it("includes an option for downloading the config", async () => {
118+
const { user } = installerRender(<InstallationFinished />);
119+
await user.click(screen.getByRole("button", { name: /More installer options/i }));
120+
const menuitem = screen.getByRole("menuitem", { name: /Download config/i });
121+
expect(menuitem).toHaveAttribute("download");
122+
});
123+
105124
describe("when running storage config in raw mode", () => {
106125
beforeEach(() => {
107126
mockUseExtendedConfigFn.mockReturnValue(mockStorageConfig("raw", null));

web/src/components/core/InstallationFinished.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
} from "@patternfly/react-core";
3333
import Page from "~/components/core/Page";
3434
import RebootButton from "~/components/core/RebootButton";
35+
import InstallerOptionsMenu from "~/components/core/InstallerOptionsMenu";
3536
import SplitInfoLayout from "~/components/layout/SplitInfoLayout";
3637
import { useExtendedConfig } from "~/hooks/model/config";
3738
import { _ } from "~/i18n";
@@ -92,7 +93,7 @@ function InstallationFinished() {
9293
const mountTpmAlert = usingTpm(storageConfig);
9394

9495
return (
95-
<Page variant="minimal">
96+
<Page noDefaultStartSlot endSlot={<InstallerOptionsMenu hideLabel />}>
9697
<Page.Content>
9798
<SplitInfoLayout
9899
icon="done_all"

0 commit comments

Comments
 (0)