@fluentui/react-conformance v0.19.0
@fluentui/react-conformance
A tool used to run standardized tests which follow Fluent UI React's component guidelines. It also can be extended and allows for adding your own conformance tests.
Configuration
isConformant ( base configuration )
Add isConformant within your package and configure any globally applied test options.
my-proj/
├─ common/
│ ├─ isConformant.ts 👈
├─ src/
├─ node_modules/
├─ package.json
import { isConformant as baseIsConformant } from '@fluentui/react-conformance';
import type { IsConformantOptions } from '@fluentui/react-conformance';
export function isConformant<TProps = {}>(
testInfo: Omit<IsConformantOptions<TProps>, 'componentPath'> & { componentPath?: string },
) {
const defaultOptions: Partial<IsConformantOptions<TProps>> = {
componentPath: require.main?.filename.replace('.test', ''),
// 👆 Put any required test options here ( ex: componentPath, asPropHandlesRef, ... )
};
baseIsConformant(defaultOptions, testInfo);
}
isConformant ( running tests )
Within your component's test file:
my-proj/
├─ common/
├─ src/
│ ├─ components
│ │ ├─ Foo
│ │ │ ├─ ...
│ │ │ ├─ Foo.test 👈
├─ node_modules/
├─ package.json
Import the isConformant file that you just created:
import { isConformant } from '../../common/isConformant';
describe('Foo', () => {
isConformant({
Component: Foo,
displayName: 'Foo',
disabledTests: [],
// 👆 For tests that don't fit the guidelines of your component you can disable them.
});
});
isConformant with React Portals
By default isConformant
inspects a component's immediate parent container. Because React Portals are typically rendered outside this container components using Portals will fail conformance. For example the component-has-static-classnames-object
tests inspect the rendered DOM for certain class names but, with default settings, will fail for anything rendered into a Portal.
Portals can be inspected by providing a getTargetElement
function to isConformant
.
// Assume that `Foo` is a component that renders a Portal.
// It takes a prop called `idForPortal` that renders the
// provided id in the Portal, allowing it to be looked up
// via `getPortalElement()`.
const getPortalElement = (result, attr) => {
return result.baseElement.querySelector("#portal-id");
};
describe('Foo', () => {
isConformant({
Component: Foo,
displayName: 'Foo'
requiredProps: { idForPortal: "portal-id" },
getTargetElement: getPortalElement
});
});
2 days ago
3 days ago
4 days ago
5 days ago
8 days ago
9 days ago
10 days ago
11 days ago
12 days ago
15 days ago
16 days ago
17 days ago
18 days ago
22 days ago
19 days ago
23 days ago
24 days ago
25 days ago
26 days ago
29 days ago
30 days ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
8 months ago
9 months ago
10 months ago
10 months ago
10 months ago
8 months ago
9 months ago
10 months ago
9 months ago
9 months ago
9 months ago
8 months ago
10 months ago
8 months ago
6 months ago
7 months ago
6 months ago
8 months ago
7 months ago
10 months ago
6 months ago
6 months ago
9 months ago
9 months ago
5 months ago
7 months ago
5 months ago
9 months ago
8 months ago
10 months ago
10 months ago
7 months ago
7 months ago
6 months ago
10 months ago
7 months ago
7 months ago
7 months ago
9 months ago
9 months ago
8 months ago
8 months ago
8 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
6 months ago
7 months ago
7 months ago
8 months ago
8 months ago
9 months ago
10 months ago
5 months ago
10 months ago
9 months ago
5 months ago
7 months ago
9 months ago
8 months ago
6 months ago
8 months ago
6 months ago
6 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
9 months ago
9 months ago
9 months ago
6 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
6 months ago
9 months ago
9 months ago
10 months ago
10 months ago
9 months ago
7 months ago
7 months ago
9 months ago
7 months ago
6 months ago
8 months ago
9 months ago
9 months ago
6 months ago
6 months ago
8 months ago
8 months ago
5 months ago
5 months ago
5 months ago
5 months ago
7 months ago
6 months ago
7 months ago
8 months ago
5 months ago
7 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
8 months ago
11 months ago
11 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
11 months ago
11 months ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago