
Research
/Security News
CanisterWorm: npm Publisher Compromise Deploys Backdoor Across 29+ Packages
The worm-enabled campaign hit @emilgroup and @teale.io, then used an ICP canister to deliver follow-on payloads.
@1pone/ant-design-testing
Advanced tools
Easier testing for ant-design-based UI library with Jest and Vitest support
Easier testing for ant-design-based UI library with Jest and Vitest support
This library is based on React-Testing-Library and supports both Jest and Vitest testing frameworks
The latest package supports antd v5.x version.
If you are using antd 4.x, please install ant-design-testing@1.x version.
$ npm install ant-design-testing -D
#or
$ yarn add ant-design-testing -D
#or
$ pnpm add ant-design-testing -D
Then, configure the library in your test setup file:
// setupTests.ts
import { provider } from 'ant-design-testing';
// Configure prefix class (default: 'ant')
// Configure test framework (default: 'jest')
provider({
prefixCls: 'ant',
testFramework: 'jest' // or 'vitest'
});
No additional setup required. The library defaults to Jest compatibility.
Configure Vitest in your setup:
// setupTests.ts
import { provider } from 'ant-design-testing';
provider({
prefixCls: 'ant',
testFramework: 'vitest'
});
Or create a vitest.config.js:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environment: 'jsdom',
setupFiles: ['./tests/setupTests.ts'],
globals: true,
},
});
// yourInput.test.tsx
import { input, testFn } from 'ant-design-testing';
describe("Test input's fire functions", () => {
test('fireChange', () => {
const fn = testFn(); // Framework-agnostic mock function
const { container } = render(<Input onChange={fn} />);
input.fireChange(container, 'test');
expect(fn).toBeCalled();
});
});
Otherwise, you can use query to find ant-design element quickly, like this
// yourInput.test.tsx
import { input } from 'ant-design-testing';
test('query', () => {
const { container } = render(<div>
<Input />
<Input id='test' />
</div>);
const el = input.query(container, 1)
expect(el.id).toBe('test');
});
A simple example form demo, like this
// your form Component
const MyForm = ({ onSubmit }: any) => {
const [form] = Form.useForm();
return (
<Form form={form}>
<Form.Item name="username">
<Input />
</Form.Item>
<Form.Item name="password">
<Input type="password" />
</Form.Item>
<Form.Item name="role">
<Select>
<Select.Option value="admin">管理员</Select.Option>
</Select>
</Form.Item>
<Button
htmlType="submit"
onClick={() => {
onSubmit(form.getFieldsValue());
}}
>
提交
</Button>
</Form>
);
};
// your test file
import { select, input, button, testFn } from 'ant-design-testing';
it('test MyForm', () => {
const fn = testFn(); // Framework-agnostic mock function
const { container } = render(
<MyForm onSubmit={fn}/>
);
const userName = input.query(container)!;
const password = input.query(container, 1)!;
input.fireChange(userName, 'zhangsan')
input.fireChange(password, '123456')
select.fireOpen(container);
select.fireSelect(document.body, 0)
button.fireClick(container);
expect(fn).toBeCalledWith({username: 'zhangsan', password: '123456', role: 'admin'});
});
All query methods support chain calling
// basic usage
const userName = input.query(container)!;
const password = input.query(container, 1)!;
input.fireChange(userName, 'zhangsan');
input.fireChange(password, '123456');
// chain usage
input.query(container)?.fireChange('zhangsan');
input.query(container, 1)?.fireChange('123456');
The library provides framework-agnostic APIs that work with both Jest and Vitest:
import { testFn } from 'ant-design-testing';
const mockFn = testFn(); // Works with both Jest and Vitest
import { useFakeTimers, useRealTimers, runAllTimers, advanceTimersByTime } from 'ant-design-testing';
// Setup fake timers
useFakeTimers();
// Advance timers
runAllTimers();
advanceTimersByTime(1000);
// Restore real timers
useRealTimers();
import { spyOn } from 'ant-design-testing';
const spy = spyOn(console, 'log');
If you have existing Jest-specific code, you can use our migration script:
npm run migrate-tests
This script will automatically update your test files to use framework-agnostic APIs.
module.exports = {
setupFilesAfterEnv: ['./tests/setupTests.ts'],
testEnvironment: 'jsdom',
// ... other Jest config
};
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environment: 'jsdom',
setupFiles: ['./tests/setupTests.ts'],
globals: true,
},
});
# Run with Jest
npm run test:jest
# Run with Vitest
npm run test:vitest
# Default (Jest)
npm test
FAQs
Easier testing for ant-design-based UI library with Jest and Vitest support
We found that @1pone/ant-design-testing demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The worm-enabled campaign hit @emilgroup and @teale.io, then used an ICP canister to deliver follow-on payloads.

Research
/Security News
Attackers compromised Trivy GitHub Actions by force-updating tags to deliver malware, exposing CI/CD secrets across affected pipelines.

Security News
ENISA’s new package manager advisory outlines the dependency security practices companies will need to demonstrate as the EU’s Cyber Resilience Act begins enforcing software supply chain requirements.