diff --git a/change/@fluentui-react-conformance-1cbc92ae-0635-4f53-9901-2a974d890611.json b/change/@fluentui-react-conformance-1cbc92ae-0635-4f53-9901-2a974d890611.json new file mode 100644 index 0000000000000..4725c41f8cfd1 --- /dev/null +++ b/change/@fluentui-react-conformance-1cbc92ae-0635-4f53-9901-2a974d890611.json @@ -0,0 +1,7 @@ +{ + "type": "minor", + "comment": "feat: Adding getPortalElement option to static classnames object test.", + "packageName": "@fluentui/react-conformance", + "email": "esteban.230@hotmail.com", + "dependentChangeType": "patch" +} diff --git a/packages/react-conformance/src/defaultTests.tsx b/packages/react-conformance/src/defaultTests.tsx index e260634e92d8a..01637ec2a08ec 100644 --- a/packages/react-conformance/src/defaultTests.tsx +++ b/packages/react-conformance/src/defaultTests.tsx @@ -366,15 +366,22 @@ export const defaultTests: TestObject = { }; const result = render(, renderOptions); const rootEl = getTargetElement(testInfo, result, 'className'); + const portalEl = staticClassNames.getPortalElement && staticClassNames.getPortalElement(result); const indexFile = require(indexPath); const classNamesFromFile = indexFile[exportName]; const expectedClassNames: { [key: string]: string } = staticClassNames.expectedClassNames ?? classNamesFromFile; - const missingClassNames = Object.values(expectedClassNames).filter( + let missingClassNames = Object.values(expectedClassNames).filter( className => !rootEl.classList.contains(className) && !rootEl.querySelector(`.${className}`), ); + if (missingClassNames.length && portalEl) { + missingClassNames = missingClassNames.filter( + className => !portalEl.classList.contains(className) && !portalEl.querySelector(`.${className}`), + ); + } + try { expect(missingClassNames).toHaveLength(0); } catch (e) { diff --git a/packages/react-conformance/src/types.ts b/packages/react-conformance/src/types.ts index f505ea3350f17..0abb94ea054c5 100644 --- a/packages/react-conformance/src/types.ts +++ b/packages/react-conformance/src/types.ts @@ -21,6 +21,7 @@ export interface TestOptions { expectedClassNames?: { [key: string]: string; }; + getPortalElement?: (renderResult: ReturnType) => HTMLElement; }[]; 'component-has-static-classname'?: { /** Prefix for the classname, if not `fui-` */