diff --git a/frontend/src/lib/xray/forms/fields/SniffingField.tsx b/frontend/src/lib/xray/forms/fields/SniffingField.tsx index 45ce5ad26..5369f8d99 100644 --- a/frontend/src/lib/xray/forms/fields/SniffingField.tsx +++ b/frontend/src/lib/xray/forms/fields/SniffingField.tsx @@ -27,6 +27,14 @@ export default function SniffingField({ value, onChange, enableLabel }: Sniffing onChangeRef.current?.(sniffing); }, [sniffing]); + useEffect(() => { + if (value === undefined) return; + const serialized = JSON.stringify(value); + if (serialized === lastEmitted.current) return; + lastEmitted.current = serialized; + form.setFieldsValue({ sniffing: value }); + }, [value, form]); + return (
{ + it('reflects an external value change (e.g. an advanced JSON edit) in the friendly form', () => { + const disabled = SniffingSchema.parse({ enabled: false }); + const enabled = SniffingSchema.parse({ enabled: true }); + const onChange = vi.fn(); + + const { rerender, getByRole } = render( + , + ); + expect(getByRole('switch').getAttribute('aria-checked')).toBe('false'); + + rerender(); + expect(getByRole('switch').getAttribute('aria-checked')).toBe('true'); + }); +});