diff --git a/semcore/base-components/__tests__/Grid.test.jsx b/semcore/base-components/__tests__/Grid.test.jsx
index 01e3771f6f..fafaca4ae1 100644
--- a/semcore/base-components/__tests__/Grid.test.jsx
+++ b/semcore/base-components/__tests__/Grid.test.jsx
@@ -1,17 +1,22 @@
-import * as sharedTests from '@semcore/testing-utils/shared-tests';
+import { runComponentContractTests } from '@semcore/testing-utils/shared-tests';
import { cleanup } from '@semcore/testing-utils/testing-library';
import { describe, beforeEach } from '@semcore/testing-utils/vitest';
-import React from 'react';
import { Col, Row } from '../src';
-const { shouldSupportClassName, shouldSupportRef } = sharedTests;
-
describe('Grid', () => {
beforeEach(cleanup);
- shouldSupportClassName(Row);
- shouldSupportRef(Row);
- shouldSupportClassName(Col, Row);
- shouldSupportRef(Col, Row);
+ runComponentContractTests({
+ Component: Row,
+ expectedDataUiName: 'Row',
+ preset: 'root',
+ });
+
+ runComponentContractTests({
+ Component: Col,
+ Wrapper: Row,
+ expectedDataUiName: 'Row.Col',
+ preset: 'root',
+ });
});
diff --git a/semcore/base-components/__tests__/flex-box.test.jsx b/semcore/base-components/__tests__/flex-box.test.jsx
index 30f9b76007..07ce544cfe 100644
--- a/semcore/base-components/__tests__/flex-box.test.jsx
+++ b/semcore/base-components/__tests__/flex-box.test.jsx
@@ -1,17 +1,22 @@
-import * as sharedTests from '@semcore/testing-utils/shared-tests';
+import { runComponentContractTests } from '@semcore/testing-utils/shared-tests';
import { cleanup, render } from '@semcore/testing-utils/testing-library';
import { expect, test, describe, beforeEach } from '@semcore/testing-utils/vitest';
import React from 'react';
import { Box, Flex } from '../src';
-const { shouldSupportClassName, shouldSupportRef } = sharedTests;
+const SpanTag = function SpanTag(props) {
+ return ;
+};
describe('Flex', () => {
beforeEach(cleanup);
- shouldSupportClassName(Flex);
- shouldSupportRef(Flex);
+ runComponentContractTests({
+ Component: Flex,
+ expectedDataUiName: 'Flex',
+ preset: 'root',
+ });
test.concurrent('Verify supports css property', async () => {
const MAP_CSS = {
@@ -80,28 +85,15 @@ describe('Flex', () => {
describe('Box', () => {
beforeEach(cleanup);
- shouldSupportClassName(Box);
- shouldSupportRef(Box);
-
- test('Verify \'tag\' prop', () => {
- const { getByTestId } = render(
-
- tag
- ,
- );
- expect(getByTestId('box').tagName).toBe('SPAN');
- });
-
- test('Verify \'tag\' prop component', () => {
- const Span = function (props) {
- return ;
- };
- const { getByTestId } = render(
-
- tag
- ,
- );
- expect(getByTestId('box').tagName).toBe('SPAN');
+ runComponentContractTests({
+ Component: Box,
+ expectedDataUiName: 'Box',
+ preset: 'root',
+ include: ['tag'],
+ tagCases: [
+ { tag: 'button', expectedTagName: 'BUTTON' },
+ { tag: SpanTag, name: 'SpanTag', expectedTagName: 'SPAN' },
+ ],
});
test('Verify clear non html props', () => {
diff --git a/semcore/base-components/__tests__/scroll-area.test.tsx b/semcore/base-components/__tests__/scroll-area.test.tsx
index a828080131..43d0ede511 100644
--- a/semcore/base-components/__tests__/scroll-area.test.tsx
+++ b/semcore/base-components/__tests__/scroll-area.test.tsx
@@ -1,12 +1,10 @@
-import * as sharedTests from '@semcore/testing-utils/shared-tests';
+import { runComponentContractTests } from '@semcore/testing-utils/shared-tests';
import { cleanup, render, fireEvent, waitFor } from '@semcore/testing-utils/testing-library';
import { expect, test, describe, beforeEach, vi } from '@semcore/testing-utils/vitest';
import React from 'react';
import { ScrollArea, eventCalculate } from '../src';
-const { shouldSupportClassName, shouldSupportRef } = sharedTests;
-
describe('ScrollArea', () => {
beforeEach(cleanup);
@@ -25,8 +23,11 @@ describe('ScrollArea', () => {
).toBe(1);
});
- shouldSupportClassName(ScrollArea);
- shouldSupportRef(ScrollArea);
+ runComponentContractTests({
+ Component: ScrollArea,
+ expectedDataUiName: 'ScrollArea',
+ preset: 'root',
+ });
test.concurrent('Verify trigger calculate event on container', () => {
const { getByTestId } = render(
@@ -84,6 +85,10 @@ describe('ScrollArea', () => {
describe('ScrollArea.Container', () => {
beforeEach(cleanup);
- shouldSupportClassName(ScrollArea.Container, ScrollArea);
- shouldSupportRef(ScrollArea.Container, ScrollArea);
+ runComponentContractTests({
+ Component: ScrollArea.Container,
+ Wrapper: ScrollArea,
+ expectedDataUiName: 'ScrollArea.Container',
+ preset: 'root',
+ });
});
diff --git a/semcore/base-trigger/__tests__/index.test.tsx b/semcore/base-trigger/__tests__/index.test.tsx
index a2dc1caa50..03b0283bf9 100644
--- a/semcore/base-trigger/__tests__/index.test.tsx
+++ b/semcore/base-trigger/__tests__/index.test.tsx
@@ -1,5 +1,4 @@
-import * as sharedTests from '@semcore/testing-utils/shared-tests';
-import { runDependencyCheckTests } from '@semcore/testing-utils/shared-tests';
+import { runComponentContractTests, runDependencyCheckTests } from '@semcore/testing-utils/shared-tests';
import { cleanup, render, userEvent } from '@semcore/testing-utils/testing-library';
import { expect, test, describe, beforeEach } from '@semcore/testing-utils/vitest';
import React from 'react';
@@ -10,20 +9,24 @@ describe('BaseTrigger Dependency imports', () => {
runDependencyCheckTests('base-trigger');
});
-const { shouldSupportClassName, shouldSupportRef } = sharedTests;
-
describe('BaseTrigger', () => {
beforeEach(cleanup);
- shouldSupportClassName(BaseTrigger);
- shouldSupportRef(BaseTrigger);
+ runComponentContractTests({
+ Component: BaseTrigger,
+ expectedDataUiName: 'BaseTrigger',
+ preset: 'root',
+ });
});
describe('ButtonTrigger', () => {
beforeEach(cleanup);
- shouldSupportClassName(ButtonTrigger);
- shouldSupportRef(ButtonTrigger);
+ runComponentContractTests({
+ Component: ButtonTrigger,
+ expectedDataUiName: 'ButtonTrigger',
+ preset: 'root',
+ });
test.concurrent('Should work as button with labels', async () => {
const component = (
@@ -46,13 +49,20 @@ describe('ButtonTrigger', () => {
describe('FilterTrigger', () => {
beforeEach(cleanup);
- shouldSupportClassName(FilterTrigger);
- shouldSupportRef(FilterTrigger);
+ runComponentContractTests({
+ Component: FilterTrigger,
+ expectedDataUiName: 'FilterTrigger',
+ preset: 'root',
+ });
});
describe('LinkTrigger', () => {
beforeEach(cleanup);
- shouldSupportClassName(LinkTrigger);
- shouldSupportRef(LinkTrigger);
+ runComponentContractTests({
+ Component: LinkTrigger,
+ props: { children: 'Link trigger' },
+ expectedDataUiName: 'LinkTrigger',
+ preset: 'root',
+ });
});
diff --git a/semcore/button/__tests__/index.test.tsx b/semcore/button/__tests__/index.test.tsx
index 6df32c40f8..c18a9cdebd 100644
--- a/semcore/button/__tests__/index.test.tsx
+++ b/semcore/button/__tests__/index.test.tsx
@@ -1,15 +1,51 @@
-import { runDependencyCheckTests } from '@semcore/testing-utils/shared-tests';
-import { render } from '@semcore/testing-utils/testing-library';
-import { expect, test, describe } from '@semcore/testing-utils/vitest';
+import Link from '@semcore/link';
+import { runComponentContractTests, runDependencyCheckTests } from '@semcore/testing-utils/shared-tests';
+import { cleanup, render } from '@semcore/testing-utils/testing-library';
+import { beforeEach, expect, test, describe } from '@semcore/testing-utils/vitest';
import React from 'react';
-import Button from '../src';
+import Button, { ButtonLink } from '../src';
describe('Button Dependency imports', () => {
runDependencyCheckTests('button');
});
describe('Button', () => {
+ beforeEach(cleanup);
+
+ runComponentContractTests({
+ Component: Button,
+ props: { children: 'Button' },
+ expectedDataUiName: 'Button',
+ preset: ['root', 'interactive'],
+ include: ['tag'],
+ tagCases: [
+ { tag: 'a', expectedTagName: 'A', props: { href: '#' } },
+ { tag: Link, name: 'Link', expectedTagName: 'A', props: { href: '#' } },
+ ],
+ });
+
+ runComponentContractTests({
+ Component: Button.Text,
+ props: { children: 'Button text' },
+ expectedDataUiName: 'Button.Text',
+ preset: 'root',
+ });
+
+ runComponentContractTests({
+ Component: Button.Addon,
+ props: { children: Addon },
+ expectedDataUiName: 'Button.Addon',
+ preset: 'root',
+ });
+
+ runComponentContractTests({
+ Component: ButtonLink,
+ props: { children: 'ButtonLink' },
+ expectedDataUiName: 'ButtonLink',
+ preset: 'root',
+ });
+
test('Verify loading attributes', () => {
const { queryByTestId } = render(