diff --git a/pkg/storaged/crypto-keyslots.jsx b/pkg/storaged/crypto-keyslots.jsx
index f33d3fc1c267..b2d1e8c3f67a 100644
--- a/pkg/storaged/crypto-keyslots.jsx
+++ b/pkg/storaged/crypto-keyslots.jsx
@@ -23,7 +23,7 @@ import React from "react";
import { Card, CardBody, CardHeader, CardTitle } from '@patternfly/react-core/dist/esm/components/Card/index.js';
import { Checkbox } from "@patternfly/react-core/dist/esm/components/Checkbox/index.js";
import { ClipboardCopy } from "@patternfly/react-core/dist/esm/components/ClipboardCopy/index.js";
-import { Form, FormGroup } from "@patternfly/react-core/dist/esm/components/Form/index.js";
+import { FormGroup } from "@patternfly/react-core/dist/esm/components/Form/index.js";
import { DataList, DataListCell, DataListItem, DataListItemCells, DataListItemRow } from "@patternfly/react-core/dist/esm/components/DataList/index.js";
import { Text, TextContent, TextList, TextListItem, TextVariants } from "@patternfly/react-core/dist/esm/components/Text/index.js";
import { TextInput as TextInputPF } from "@patternfly/react-core/dist/esm/components/TextInput/index.js";
@@ -622,15 +622,13 @@ export const TangKeyVerification = ({ url, adv }) => {
{_("Check the key hash with the Tang server.")}
{_("How to check")}
-
- {_("In a terminal, run: ")}
-
- {cmd}
-
-
+ {_("In a terminal, run: ")}
+
+ {cmd}
+
{_("Check that the SHA-256 or SHA-1 hash from the command matches this dialog.")}
@@ -692,21 +690,19 @@ const RemovePassphraseField = (tag, key, dev) => {
return (
{ fmt_to_fragments(_("Passphrase removal may prevent unlocking $0."), {dev}) }
-
+ change(checked ? "" : false)}
+ body={val === false
+ ?
+ {_("Removing a passphrase without confirmation of another passphrase may prevent unlocking or key management, if other passphrases are forgotten or lost.")}
+
+ :
+ change(value)} />
+
+ }
+ />
);
}
diff --git a/pkg/storaged/dialog.jsx b/pkg/storaged/dialog.jsx
index 927a5db28151..cc1cf29d2aad 100644
--- a/pkg/storaged/dialog.jsx
+++ b/pkg/storaged/dialog.jsx
@@ -1107,13 +1107,13 @@ const UsersPopover = ({ users }) => {
bodyContent={
<>
{ services.length > 0
- ?
- {_("Services using the location")}
+ ? <>
+
{_("Services using the location")}
{ services.slice(0, max).map((u, i) => {u.unit.replace(/\.service$/, "")}) }
{ services.length > max ? ... : null }
-
+ >
: null
}
{ services.length > 0 && processes.length > 0
@@ -1121,13 +1121,13 @@ const UsersPopover = ({ users }) => {
: null
}
{ processes.length > 0
- ?
- {_("Processes using the location")}
+ ? <>
+
{_("Processes using the location")}
{ processes.slice(0, max).map((u, i) => {u.comm} (user: {u.user}, pid: {u.pid})) }
{ processes.length > max ? ... : null }
-
+ >
: null
}
>}>
@@ -1257,7 +1257,8 @@ export const StopProcessesMessage = ({ mount_point, users }) => {
return (
{ process_rows.length > 0
- ?
{fmt_to_fragments(_("The mount point $0 is in use by these processes:"), {mount_point})}
+ ? <>
+
{fmt_to_fragments(_("The mount point $0 is in use by these processes:"), {mount_point})}
{
]
}
rows={process_rows} />
-
+ >
: null
}
{ process_rows.length > 0 && service_rows.length > 0
@@ -1276,7 +1277,8 @@ export const StopProcessesMessage = ({ mount_point, users }) => {
: null
}
{ service_rows.length > 0
- ? {fmt_to_fragments(_("The mount point $0 is in use by these services:"), {mount_point})}
+ ? <>
+
{fmt_to_fragments(_("The mount point $0 is in use by these services:"), {mount_point})}
{
]
}
rows={service_rows} />
-
+ >
: null
}
);
diff --git a/test/common/testlib.py b/test/common/testlib.py
index 8fb8dea58345..a98d6b5091af 100644
--- a/test/common/testlib.py
+++ b/test/common/testlib.py
@@ -1701,8 +1701,6 @@ def login_and_go(self, path: Optional[str] = None, user: Optional[str] = None, h
# List of allowed console.error() messages during tests; these match substrings
default_allowed_console_errors = [
- # HACK: Fix these ASAP, these are major bugs
- "Warning: validateDOMNesting.*cannot appear as a",
# HACK: These should be fixed, but debugging these is not trivial, and the impact is very low
"Warning: .* setState.*on an unmounted component",
"Warning: Can't perform a React state update on an unmounted component",
diff --git a/test/verify/check-storage-luks b/test/verify/check-storage-luks
index 594b09f6cd36..cceda5d43902 100755
--- a/test/verify/check-storage-luks
+++ b/test/verify/check-storage-luks
@@ -193,6 +193,9 @@ class TestStorageLuks(storagelib.StorageCase):
b.logout()
testlib.wait(lambda: m.execute("(loginctl list-users | grep admin) || true") == "")
+ # FIXME: race condition after unmounting; hard to investigate, re-check after storage redesign
+ self.allow_browser_errors("validateDOMNesting.*cannot appear as a child.* ul")
+
def testNoFsys(self):
m = self.machine
b = self.browser
diff --git a/test/verify/check-storage-lvm2 b/test/verify/check-storage-lvm2
index f0d5cafa5cda..75da748797ac 100755
--- a/test/verify/check-storage-lvm2
+++ b/test/verify/check-storage-lvm2
@@ -251,6 +251,9 @@ class TestStorageLvm2(storagelib.StorageCase):
b.wait_not_in_text("#devices", "vgroup1")
self.assertEqual(m.execute(f"grep {mount_point_thin} /etc/fstab || true"), "")
+ # FIXME: Grow/Shrink buttons are in a dd > div > dd without dl wrapper
+ self.allow_browser_errors("validateDOMNesting.*cannot appear as a descendant.* dd")
+
def testUnpartitionedSpace(self):
m = self.machine
b = self.browser
@@ -334,6 +337,9 @@ class TestStorageLvm2(storagelib.StorageCase):
self.content_row_wait_in_col(1, 1, "lvol0")
b.wait_not_in_text("#storage-detail", "snap0")
+ # FIXME: Grow/Shrink buttons are in a dd > div > dd without dl wrapper
+ self.allow_browser_errors("validateDOMNesting.*cannot appear as a descendant.* dd")
+
if __name__ == '__main__':
testlib.test_main()
diff --git a/test/verify/check-storage-used b/test/verify/check-storage-used
index b6780724ea1d..0b2e0ee85c64 100755
--- a/test/verify/check-storage-used
+++ b/test/verify/check-storage-used
@@ -68,7 +68,7 @@ ExecStart=/usr/bin/sleep infinity
b.wait_in_text(".pf-v5-c-popover", str(sleep_pid))
b.wait_in_text(".pf-v5-c-popover", "keep-mnt-busy")
b.assert_pixels(".pf-v5-c-popover", "popover",
- mock={".pf-v5-c-popover__body p:nth-of-type(2) li": "process (user: root, pid: 1234)"},
+ mock={".pf-v5-c-popover__body ul:nth-of-type(2) li": "process (user: root, pid: 1234)"},
scroll_into_view="#dialog button:contains(Currently in use)")
b.click(".pf-v5-c-popover button")
b.assert_pixels('#dialog', "format", wait_after_layout_change=True)