diff --git a/packages/create-rslib/fragments/tools/rstest-node-js/package.json b/packages/create-rslib/fragments/tools/rstest-node-js/package.json new file mode 100644 index 000000000..f72d6b688 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-node-js/package.json @@ -0,0 +1,8 @@ +{ + "scripts": { + "test": "rstest" + }, + "devDependencies": { + "@rstest/core": "^0.1.3" + } +} diff --git a/packages/create-rslib/fragments/tools/rstest-node-js/rstest.config.js b/packages/create-rslib/fragments/tools/rstest-node-js/rstest.config.js new file mode 100644 index 000000000..9ee3cbabc --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-node-js/rstest.config.js @@ -0,0 +1,3 @@ +import { defineConfig } from '@rstest/core'; + +export default defineConfig({}); diff --git a/packages/create-rslib/fragments/tools/rstest-node-js/tests/index.test.js b/packages/create-rslib/fragments/tools/rstest-node-js/tests/index.test.js new file mode 100644 index 000000000..d87ea6400 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-node-js/tests/index.test.js @@ -0,0 +1,7 @@ +import { expect, test } from '@rstest/core'; +import { squared } from '../src/index.js'; + +test('squared', () => { + expect(squared(2)).toBe(4); + expect(squared(12)).toBe(144); +}); diff --git a/packages/create-rslib/fragments/tools/rstest-node-ts/package.json b/packages/create-rslib/fragments/tools/rstest-node-ts/package.json new file mode 100644 index 000000000..f72d6b688 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-node-ts/package.json @@ -0,0 +1,8 @@ +{ + "scripts": { + "test": "rstest" + }, + "devDependencies": { + "@rstest/core": "^0.1.3" + } +} diff --git a/packages/create-rslib/fragments/tools/rstest-node-ts/rstest.config.ts b/packages/create-rslib/fragments/tools/rstest-node-ts/rstest.config.ts new file mode 100644 index 000000000..9ee3cbabc --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-node-ts/rstest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from '@rstest/core'; + +export default defineConfig({}); diff --git a/packages/create-rslib/fragments/tools/rstest-node-ts/tests/index.test.ts b/packages/create-rslib/fragments/tools/rstest-node-ts/tests/index.test.ts new file mode 100644 index 000000000..f8081f198 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-node-ts/tests/index.test.ts @@ -0,0 +1,7 @@ +import { expect, test } from '@rstest/core'; +import { squared } from '../src/index'; + +test('squared', () => { + expect(squared(2)).toBe(4); + expect(squared(12)).toBe(144); +}); diff --git a/packages/create-rslib/fragments/tools/rstest-react-js/package.json b/packages/create-rslib/fragments/tools/rstest-react-js/package.json new file mode 100644 index 000000000..aa7d61441 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-react-js/package.json @@ -0,0 +1,11 @@ +{ + "scripts": { + "test": "rstest" + }, + "devDependencies": { + "@rstest/core": "^0.1.3", + "@testing-library/jest-dom": "^6.6.4", + "@testing-library/react": "^16.3.0", + "jsdom": "^26.1.0" + } +} diff --git a/packages/create-rslib/fragments/tools/rstest-react-js/rstest.config.js b/packages/create-rslib/fragments/tools/rstest-react-js/rstest.config.js new file mode 100644 index 000000000..1394dc0dd --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-react-js/rstest.config.js @@ -0,0 +1,8 @@ +import { pluginReact } from '@rsbuild/plugin-react'; +import { defineConfig } from '@rstest/core'; + +export default defineConfig({ + testEnvironment: 'jsdom', + setupFiles: ['./rstest.setup.js'], + plugins: [pluginReact()], +}); diff --git a/packages/create-rslib/fragments/tools/rstest-react-js/rstest.setup.js b/packages/create-rslib/fragments/tools/rstest-react-js/rstest.setup.js new file mode 100644 index 000000000..32b38ae28 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-react-js/rstest.setup.js @@ -0,0 +1,4 @@ +import { expect } from '@rstest/core'; +import * as jestDomMatchers from '@testing-library/jest-dom/matchers'; + +expect.extend(jestDomMatchers); diff --git a/packages/create-rslib/fragments/tools/rstest-react-js/tests/index.test.jsx b/packages/create-rslib/fragments/tools/rstest-react-js/tests/index.test.jsx new file mode 100644 index 000000000..91e7bde86 --- /dev/null +++ b/packages/create-rslib/fragments/tools/rstest-react-js/tests/index.test.jsx @@ -0,0 +1,11 @@ +import { expect, test } from '@rstest/core'; +import { render, screen } from '@testing-library/react'; +import { Button } from '../src/Button'; + +test('The button should have correct background color', async () => { + render( + ); +}; diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-js/src/button.css b/packages/create-rslib/template-[react]-[rstest,storybook]-js/src/button.css new file mode 100644 index 000000000..b7a36cbde --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-js/src/button.css @@ -0,0 +1,34 @@ +.demo-button { + font-weight: 700; + border: 0; + border-radius: 3em; + cursor: pointer; + display: inline-block; + line-height: 1; +} + +.demo-button--primary { + color: white; + background-color: #1ea7fd; +} + +.demo-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} + +.demo-button--small { + font-size: 12px; + padding: 10px 16px; +} + +.demo-button--medium { + font-size: 14px; + padding: 11px 20px; +} + +.demo-button--large { + font-size: 16px; + padding: 12px 24px; +} diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-js/src/index.jsx b/packages/create-rslib/template-[react]-[rstest,storybook]-js/src/index.jsx new file mode 100644 index 000000000..fe9c53c51 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-js/src/index.jsx @@ -0,0 +1 @@ +export { Button } from './Button'; diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-js/stories/Button.stories.jsx b/packages/create-rslib/template-[react]-[rstest,storybook]-js/stories/Button.stories.jsx new file mode 100644 index 000000000..52df85343 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-js/stories/Button.stories.jsx @@ -0,0 +1,50 @@ +import { fn } from '@storybook/test'; +import { Button } from '../src/Button'; + +// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export +const meta = { + title: 'Example/Button', + component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs + tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/api/argtypes + argTypes: { + backgroundColor: { control: 'color' }, + }, + // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args + args: { onClick: fn() }, +}; + +export default meta; + +// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args +export const Primary = { + args: { + primary: true, + label: 'Button', + }, +}; + +export const Secondary = { + args: { + label: 'Button', + }, +}; + +export const Large = { + args: { + size: 'large', + label: 'Button', + }, +}; + +export const Small = { + args: { + size: 'small', + label: 'Button', + }, +}; diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-js/tests/index.test.jsx b/packages/create-rslib/template-[react]-[rstest,storybook]-js/tests/index.test.jsx new file mode 100644 index 000000000..91e7bde86 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-js/tests/index.test.jsx @@ -0,0 +1,11 @@ +import { expect, test } from '@rstest/core'; +import { render, screen } from '@testing-library/react'; +import { Button } from '../src/Button'; + +test('The button should have correct background color', async () => { + render( + ); +}; diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-ts/src/button.css b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/src/button.css new file mode 100644 index 000000000..b7a36cbde --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/src/button.css @@ -0,0 +1,34 @@ +.demo-button { + font-weight: 700; + border: 0; + border-radius: 3em; + cursor: pointer; + display: inline-block; + line-height: 1; +} + +.demo-button--primary { + color: white; + background-color: #1ea7fd; +} + +.demo-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} + +.demo-button--small { + font-size: 12px; + padding: 10px 16px; +} + +.demo-button--medium { + font-size: 14px; + padding: 11px 20px; +} + +.demo-button--large { + font-size: 16px; + padding: 12px 24px; +} diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-ts/src/index.tsx b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/src/index.tsx new file mode 100644 index 000000000..fe9c53c51 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/src/index.tsx @@ -0,0 +1 @@ +export { Button } from './Button'; diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-ts/stories/Button.stories.ts b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/stories/Button.stories.ts new file mode 100644 index 000000000..b35a99786 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/stories/Button.stories.ts @@ -0,0 +1,52 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { fn } from '@storybook/test'; +import { Button } from '../src/Button'; + +// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export +const meta = { + title: 'Example/Button', + component: Button, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs + tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/api/argtypes + argTypes: { + backgroundColor: { control: 'color' }, + }, + // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args + args: { onClick: fn() }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args +export const Primary: Story = { + args: { + primary: true, + label: 'Button', + }, +}; + +export const Secondary: Story = { + args: { + label: 'Button', + }, +}; + +export const Large: Story = { + args: { + size: 'large', + label: 'Button', + }, +}; + +export const Small: Story = { + args: { + size: 'small', + label: 'Button', + }, +}; diff --git a/packages/create-rslib/template-[react]-[rstest,storybook]-ts/tests/index.test.tsx b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/tests/index.test.tsx new file mode 100644 index 000000000..91e7bde86 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest,storybook]-ts/tests/index.test.tsx @@ -0,0 +1,11 @@ +import { expect, test } from '@rstest/core'; +import { render, screen } from '@testing-library/react'; +import { Button } from '../src/Button'; + +test('The button should have correct background color', async () => { + render( + ); +}; diff --git a/packages/create-rslib/template-[react]-[rstest]-js/src/button.css b/packages/create-rslib/template-[react]-[rstest]-js/src/button.css new file mode 100644 index 000000000..b7a36cbde --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest]-js/src/button.css @@ -0,0 +1,34 @@ +.demo-button { + font-weight: 700; + border: 0; + border-radius: 3em; + cursor: pointer; + display: inline-block; + line-height: 1; +} + +.demo-button--primary { + color: white; + background-color: #1ea7fd; +} + +.demo-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} + +.demo-button--small { + font-size: 12px; + padding: 10px 16px; +} + +.demo-button--medium { + font-size: 14px; + padding: 11px 20px; +} + +.demo-button--large { + font-size: 16px; + padding: 12px 24px; +} diff --git a/packages/create-rslib/template-[react]-[rstest]-js/src/index.jsx b/packages/create-rslib/template-[react]-[rstest]-js/src/index.jsx new file mode 100644 index 000000000..fe9c53c51 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest]-js/src/index.jsx @@ -0,0 +1 @@ +export { Button } from './Button'; diff --git a/packages/create-rslib/template-[react]-[rstest]-js/tests/index.test.jsx b/packages/create-rslib/template-[react]-[rstest]-js/tests/index.test.jsx new file mode 100644 index 000000000..91e7bde86 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest]-js/tests/index.test.jsx @@ -0,0 +1,11 @@ +import { expect, test } from '@rstest/core'; +import { render, screen } from '@testing-library/react'; +import { Button } from '../src/Button'; + +test('The button should have correct background color', async () => { + render( + ); +}; diff --git a/packages/create-rslib/template-[react]-[rstest]-ts/src/button.css b/packages/create-rslib/template-[react]-[rstest]-ts/src/button.css new file mode 100644 index 000000000..b7a36cbde --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest]-ts/src/button.css @@ -0,0 +1,34 @@ +.demo-button { + font-weight: 700; + border: 0; + border-radius: 3em; + cursor: pointer; + display: inline-block; + line-height: 1; +} + +.demo-button--primary { + color: white; + background-color: #1ea7fd; +} + +.demo-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} + +.demo-button--small { + font-size: 12px; + padding: 10px 16px; +} + +.demo-button--medium { + font-size: 14px; + padding: 11px 20px; +} + +.demo-button--large { + font-size: 16px; + padding: 12px 24px; +} diff --git a/packages/create-rslib/template-[react]-[rstest]-ts/src/index.tsx b/packages/create-rslib/template-[react]-[rstest]-ts/src/index.tsx new file mode 100644 index 000000000..fe9c53c51 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest]-ts/src/index.tsx @@ -0,0 +1 @@ +export { Button } from './Button'; diff --git a/packages/create-rslib/template-[react]-[rstest]-ts/tests/index.test.tsx b/packages/create-rslib/template-[react]-[rstest]-ts/tests/index.test.tsx new file mode 100644 index 000000000..91e7bde86 --- /dev/null +++ b/packages/create-rslib/template-[react]-[rstest]-ts/tests/index.test.tsx @@ -0,0 +1,11 @@ +import { expect, test } from '@rstest/core'; +import { render, screen } from '@testing-library/react'; +import { Button } from '../src/Button'; + +test('The button should have correct background color', async () => { + render(