mirror of
https://gitee.com/baidu/amis.git
synced 2024-11-29 18:39:05 +08:00
Merge pull request #9579 from nwind/chore-swc-jest
chore: jest 使用 @swc/jest 编译,提升性能
This commit is contained in:
commit
50a66ef9b3
23
.swcrc
Normal file
23
.swcrc
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/swcrc",
|
||||
"jsc": {
|
||||
"parser": {
|
||||
"syntax": "typescript",
|
||||
"tsx": true,
|
||||
"decorators": true,
|
||||
"dynamicImport": true
|
||||
},
|
||||
"transform": {
|
||||
"decoratorMetadata": true,
|
||||
"legacyDecorator": true,
|
||||
"react": {
|
||||
"runtime": "classic"
|
||||
}
|
||||
},
|
||||
"keepClassNames": true,
|
||||
"externalHelpers": true,
|
||||
"loose": false
|
||||
},
|
||||
"sourceMaps": true,
|
||||
"minify": false
|
||||
}
|
10
README.md
10
README.md
@ -63,7 +63,13 @@ npm test --workspaces
|
||||
|
||||
# 测试某个用例
|
||||
# <spec-name>为用例名称,比如inputImage
|
||||
npm test --workspace amis <spec-name>
|
||||
npm test --workspace amis -- -t <spec-name>
|
||||
|
||||
# 运行某个单测文件
|
||||
./node_modules/.bin/jest packages/amis/__tests__/renderers/Form/buttonToolBar.test.tsx
|
||||
|
||||
# 运行某个单测文件里的某个例子
|
||||
./node_modules/.bin/jest packages/amis/__tests__/renderers/Form/buttonToolBar.test.tsx -t 'Renderer:button-toolbar'
|
||||
|
||||
# 查看测试用例覆盖率
|
||||
npm run coverage
|
||||
@ -73,7 +79,7 @@ npm run update-snapshot
|
||||
|
||||
# 更新单个 snapshot
|
||||
# <spec-name>为用例名称,比如inputImage
|
||||
npm run update-snapshot --workspace amis <spec-name>
|
||||
npm run update-snapshot --workspace amis -- -t <spec-name>
|
||||
```
|
||||
|
||||
### 发布版本
|
||||
|
@ -52,6 +52,9 @@
|
||||
"@babel/types": "^7.22.5",
|
||||
"@fortawesome/fontawesome-free": "^6.1.1",
|
||||
"@rollup/plugin-replace": "^5.0.1",
|
||||
"@swc/core": "^1.3.107",
|
||||
"@swc/helpers": "^0.5.3",
|
||||
"@swc/jest": "^0.2.34",
|
||||
"@types/express": "^4.17.14",
|
||||
"@types/jest": "^28.1.0",
|
||||
"@types/js-yaml": "^4.0.5",
|
||||
@ -117,7 +120,9 @@
|
||||
"tsx",
|
||||
"js"
|
||||
],
|
||||
"preset": "ts-jest",
|
||||
"transform": {
|
||||
"^.+\\.(t|j)sx?$": "@swc/jest"
|
||||
},
|
||||
"setupFiles": [
|
||||
"jest-canvas-mock"
|
||||
],
|
||||
@ -144,4 +149,4 @@
|
||||
"printBasicPrototype": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
22
packages/amis-core/.swcrc
Normal file
22
packages/amis-core/.swcrc
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/swcrc",
|
||||
"jsc": {
|
||||
"parser": {
|
||||
"syntax": "typescript",
|
||||
"tsx": true,
|
||||
"decorators": true,
|
||||
"dynamicImport": true
|
||||
},
|
||||
"transform": {
|
||||
"decoratorMetadata": true,
|
||||
"legacyDecorator": true,
|
||||
"react": {
|
||||
"runtime": "classic"
|
||||
}
|
||||
},
|
||||
"keepClassNames": true,
|
||||
"externalHelpers": true,
|
||||
"loose": false
|
||||
},
|
||||
"minify": false
|
||||
}
|
@ -85,12 +85,7 @@
|
||||
"js"
|
||||
],
|
||||
"transform": {
|
||||
"\\.(ts|tsx)$": [
|
||||
"ts-jest",
|
||||
{
|
||||
"diagnostics": false
|
||||
}
|
||||
]
|
||||
"^.+\\.(t|j)sx?$": "@swc/jest"
|
||||
},
|
||||
"setupFiles": [
|
||||
"jest-canvas-mock"
|
||||
@ -109,4 +104,4 @@
|
||||
]
|
||||
},
|
||||
"gitHead": "37d23b4a8eb1c663bc38e8dd9040889ea1526ec4"
|
||||
}
|
||||
}
|
@ -95,12 +95,7 @@
|
||||
"js"
|
||||
],
|
||||
"transform": {
|
||||
"\\.(ts|tsx)$": [
|
||||
"ts-jest",
|
||||
{
|
||||
"diagnostics": false
|
||||
}
|
||||
]
|
||||
"^.+\\.(t|j)sx?$": "@swc/jest"
|
||||
},
|
||||
"setupFiles": [
|
||||
"jest-canvas-mock"
|
||||
@ -119,4 +114,4 @@
|
||||
}
|
||||
},
|
||||
"gitHead": "37d23b4a8eb1c663bc38e8dd9040889ea1526ec4"
|
||||
}
|
||||
}
|
@ -6,7 +6,7 @@
|
||||
"module": "esm/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\"",
|
||||
"test": "echo \"Warnings: no test specified\"",
|
||||
"build": "npm run clean-dist && NODE_ENV=production rollup -c ",
|
||||
"clean-dist": "rimraf lib/** esm/**",
|
||||
"i18n:update": "npx i18n update --config=./i18nConfig.js",
|
||||
|
@ -123,12 +123,7 @@
|
||||
"js"
|
||||
],
|
||||
"transform": {
|
||||
"\\.(ts|tsx)$": [
|
||||
"ts-jest",
|
||||
{
|
||||
"diagnostics": false
|
||||
}
|
||||
]
|
||||
"^.+\\.(t|j)sx?$": "@swc/jest"
|
||||
},
|
||||
"setupFiles": [
|
||||
"jest-canvas-mock"
|
||||
@ -148,4 +143,4 @@
|
||||
]
|
||||
},
|
||||
"gitHead": "37d23b4a8eb1c663bc38e8dd9040889ea1526ec4"
|
||||
}
|
||||
}
|
22
packages/amis/.swcrc
Normal file
22
packages/amis/.swcrc
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/swcrc",
|
||||
"jsc": {
|
||||
"parser": {
|
||||
"syntax": "typescript",
|
||||
"tsx": true,
|
||||
"decorators": true,
|
||||
"dynamicImport": true
|
||||
},
|
||||
"transform": {
|
||||
"decoratorMetadata": true,
|
||||
"legacyDecorator": true,
|
||||
"react": {
|
||||
"runtime": "classic"
|
||||
}
|
||||
},
|
||||
"keepClassNames": true,
|
||||
"externalHelpers": true,
|
||||
"loose": false
|
||||
},
|
||||
"minify": false
|
||||
}
|
@ -5,7 +5,8 @@ import {makeEnv, wait} from '../helper';
|
||||
|
||||
test('1. EventAction:dialog args', async () => {
|
||||
const notify = jest.fn();
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -142,6 +143,8 @@ test('1. EventAction:dialog args', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开弹窗'));
|
||||
@ -222,7 +225,8 @@ test('1. EventAction:dialog args', async () => {
|
||||
|
||||
test('2. EventAction:dialog', async () => {
|
||||
const notify = jest.fn();
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -356,6 +360,9 @@ test('2. EventAction:dialog', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开弹窗'));
|
||||
expect(container).toMatchSnapshot();
|
||||
@ -434,7 +441,8 @@ test('2. EventAction:dialog', async () => {
|
||||
}, 7000);
|
||||
|
||||
test('3. EventAction:dialog data', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -480,7 +488,8 @@ test('3. EventAction:dialog data', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
// events
|
||||
fireEvent.click(getByText('打开弹窗'));
|
||||
await waitFor(() => {
|
||||
@ -491,7 +500,8 @@ test('3. EventAction:dialog data', async () => {
|
||||
}, 7000);
|
||||
|
||||
test('4. EventAction:dialog data2', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -535,6 +545,8 @@ test('4. EventAction:dialog data2', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开弹窗'));
|
||||
|
@ -5,7 +5,8 @@ import {makeEnv, wait} from '../helper';
|
||||
|
||||
test('EventAction:drawer args', async () => {
|
||||
const notify = jest.fn();
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -142,6 +143,8 @@ test('EventAction:drawer args', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开抽屉'));
|
||||
@ -222,7 +225,8 @@ test('EventAction:drawer args', async () => {
|
||||
|
||||
test('EventAction:drawer', async () => {
|
||||
const notify = jest.fn();
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -356,6 +360,9 @@ test('EventAction:drawer', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开抽屉'));
|
||||
expect(container).toMatchSnapshot();
|
||||
@ -434,7 +441,8 @@ test('EventAction:drawer', async () => {
|
||||
}, 7000);
|
||||
|
||||
test('EventAction:drawer data', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -480,6 +488,8 @@ test('EventAction:drawer data', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开抽屉'));
|
||||
@ -491,7 +501,8 @@ test('EventAction:drawer data', async () => {
|
||||
}, 7000);
|
||||
|
||||
test('EventAction:drawer data2', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -536,6 +547,9 @@ test('EventAction:drawer data2', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
// events
|
||||
fireEvent.click(getByText('打开抽屉'));
|
||||
await waitFor(() => {
|
||||
|
@ -16,7 +16,8 @@ test('EventAction:prevent', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -84,6 +85,8 @@ test('EventAction:prevent', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
fireEvent.click(getByText('打开弹窗'));
|
||||
await waitFor(() => {
|
||||
@ -111,7 +114,8 @@ test('EventAction:ignoreError', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -156,6 +160,8 @@ test('EventAction:ignoreError', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
fireEvent.click(getByText('按钮'));
|
||||
await waitFor(() => {
|
||||
|
@ -193,7 +193,8 @@ test('CRUD reload dialog1', async () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
const {container, getByText}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -244,6 +245,8 @@ test('CRUD reload dialog1', async () => {
|
||||
makeEnv({fetcher: mockFetcher, getModalContainer: () => container})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
await wait(200);
|
||||
const saveBtn = container.querySelectorAll('tbody>tr button')[0];
|
||||
expect(saveBtn).toBeTruthy();
|
||||
@ -287,7 +290,8 @@ test('CRUD reload dialog2', async () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
const {container, getByText}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -339,6 +343,8 @@ test('CRUD reload dialog2', async () => {
|
||||
makeEnv({fetcher: mockFetcher, getModalContainer: () => container})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
await wait(200);
|
||||
const saveBtn = container.querySelectorAll('tbody>tr button')[0];
|
||||
expect(saveBtn).toBeTruthy();
|
||||
@ -378,7 +384,8 @@ test('CRUD reload drawer1', async () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
const {container, getByText}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -429,6 +436,8 @@ test('CRUD reload drawer1', async () => {
|
||||
makeEnv({fetcher: mockFetcher, getModalContainer: () => container})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
await wait(200);
|
||||
const saveBtn = container.querySelectorAll('tbody>tr button')[0];
|
||||
expect(saveBtn).toBeTruthy();
|
||||
@ -472,7 +481,8 @@ test('CRUD reload drawer2', async () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
const {container, getByText}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -524,6 +534,8 @@ test('CRUD reload drawer2', async () => {
|
||||
makeEnv({fetcher: mockFetcher, getModalContainer: () => container})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
await wait(200);
|
||||
const saveBtn = container.querySelectorAll('tbody>tr button')[0];
|
||||
expect(saveBtn).toBeTruthy();
|
||||
|
@ -162,7 +162,8 @@ test('Picker filter1', async () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
const {container} = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -217,6 +218,8 @@ test('Picker filter1', async () => {
|
||||
makeEnv({fetcher: mockFetcher, getModalContainer: () => container} as any)
|
||||
)
|
||||
);
|
||||
container = renderResult.container;
|
||||
|
||||
await wait(200);
|
||||
const pickerBtn = container.querySelector('span.cxd-Picker-btn')!;
|
||||
expect(pickerBtn).toBeTruthy();
|
||||
@ -249,7 +252,8 @@ test('Picker filter2', async () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
const {container} = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -295,6 +299,8 @@ test('Picker filter2', async () => {
|
||||
makeEnv({fetcher: mockFetcher, getModalContainer: () => container} as any)
|
||||
)
|
||||
);
|
||||
container = renderResult.container;
|
||||
|
||||
await wait(200);
|
||||
const pickerBtn = container.querySelector('span.cxd-Picker-btn')!;
|
||||
expect(pickerBtn).toBeTruthy();
|
||||
|
@ -1,257 +1,5 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Renderer:input-formula 1`] = `
|
||||
<div>
|
||||
<div
|
||||
class="cxd-Page"
|
||||
>
|
||||
<div
|
||||
class="cxd-Page-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Page-main"
|
||||
>
|
||||
<div
|
||||
class="cxd-Page-body"
|
||||
role="page-body"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel cxd-Panel--default cxd-Panel--form"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel-heading"
|
||||
>
|
||||
<h3
|
||||
class="cxd-Panel-title"
|
||||
>
|
||||
<span
|
||||
class="cxd-TplField"
|
||||
>
|
||||
<span>
|
||||
表单
|
||||
</span>
|
||||
</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Panel-body"
|
||||
>
|
||||
<form
|
||||
class="cxd-Form cxd-Form--normal"
|
||||
novalidate=""
|
||||
>
|
||||
<input
|
||||
style="display: none;"
|
||||
type="submit"
|
||||
/>
|
||||
<div
|
||||
class="cxd-JsonField cxd-Form--debug"
|
||||
>
|
||||
<div
|
||||
class="react-json-view"
|
||||
style="font-family: monospace; cursor: default; background-color: rgba(0, 0, 0, 0); position: relative;"
|
||||
>
|
||||
<div
|
||||
class="pretty-json-container object-container"
|
||||
>
|
||||
<div
|
||||
class="object-content"
|
||||
>
|
||||
<div
|
||||
class="object-key-val"
|
||||
>
|
||||
<span>
|
||||
<span
|
||||
style="display: inline-block; cursor: pointer;"
|
||||
>
|
||||
<div
|
||||
class="icon-container"
|
||||
style="display: inline-block; width: 17px;"
|
||||
>
|
||||
<span
|
||||
class="expanded-icon"
|
||||
>
|
||||
<svg
|
||||
fill="#586e75"
|
||||
height="1em"
|
||||
style="vertical-align: middle; color: rgb(88, 110, 117); height: 1em; width: 1em;"
|
||||
viewBox="0 0 1792 1792"
|
||||
width="1em"
|
||||
>
|
||||
<path
|
||||
d="M1344 800v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
<span />
|
||||
<span
|
||||
style="display: inline-block; cursor: pointer; font-weight: bold; color: rgb(0, 43, 54);"
|
||||
>
|
||||
{
|
||||
</span>
|
||||
</span>
|
||||
<div
|
||||
class="object-meta-data"
|
||||
style="display: inline-block; padding: 0px 0px 0px 10px;"
|
||||
>
|
||||
<span
|
||||
class="object-size"
|
||||
style="color: rgba(0, 0, 0, 0.3); border-radius: 3px; font-style: italic; margin: 0px 6px 0px 0px; cursor: default;"
|
||||
>
|
||||
1
|
||||
item
|
||||
</span>
|
||||
</div>
|
||||
</span>
|
||||
<div
|
||||
class="pushed-content object-container"
|
||||
>
|
||||
<div
|
||||
class="object-content"
|
||||
style="margin-left: 6px;"
|
||||
>
|
||||
<div
|
||||
class="variable-row"
|
||||
style="border-left: 1px solid rgb(235, 235, 235); padding: 3px 5px 3px 20px;"
|
||||
>
|
||||
<span>
|
||||
<span
|
||||
class="object-key"
|
||||
style="display: inline-block; color: rgb(0, 43, 54); letter-spacing: 0.5px; font-style: none; vertical-align: top; opacity: 0.85;"
|
||||
>
|
||||
<span
|
||||
style="vertical-align: top;"
|
||||
>
|
||||
"
|
||||
</span>
|
||||
<span
|
||||
style="display: inline-block;"
|
||||
>
|
||||
formula
|
||||
</span>
|
||||
<span
|
||||
style="vertical-align: top;"
|
||||
>
|
||||
"
|
||||
</span>
|
||||
</span>
|
||||
<span
|
||||
style="display: inline-block; margin: 0px 5px; color: rgb(0, 43, 54); vertical-align: top;"
|
||||
>
|
||||
:
|
||||
</span>
|
||||
</span>
|
||||
<div
|
||||
class="variable-value"
|
||||
style="display: inline-block; padding-right: 6px; position: relative; cursor: default;"
|
||||
>
|
||||
<div
|
||||
style="display: inline-block; color: rgb(203, 75, 22);"
|
||||
>
|
||||
<span
|
||||
class="string-value"
|
||||
style="cursor: default;"
|
||||
>
|
||||
"
|
||||
SUM(1 + 2)
|
||||
"
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span
|
||||
class="brace-row"
|
||||
>
|
||||
<span
|
||||
style="display: inline-block; cursor: pointer; font-weight: bold; color: rgb(0, 43, 54); padding-left: 3px;"
|
||||
>
|
||||
}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Form-item cxd-Form-item--normal"
|
||||
data-role="form-item"
|
||||
>
|
||||
<label
|
||||
class="cxd-Form-label"
|
||||
>
|
||||
<span>
|
||||
<span
|
||||
class="cxd-TplField"
|
||||
>
|
||||
<span>
|
||||
公式
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
<div
|
||||
class="cxd-FormulaPicker cxd-FormulaPicker--text cxd-Form-control"
|
||||
>
|
||||
<div
|
||||
class="cxd-ResultBox cxd-FormulaPicker-input cxd-ResultBox--borderFull"
|
||||
tabindex="-1"
|
||||
>
|
||||
<div
|
||||
class="cxd-ResultBox-value-wrap"
|
||||
>
|
||||
<input
|
||||
class="cxd-ResultBox-value-input"
|
||||
placeholder="暂无数据"
|
||||
theme="cxd"
|
||||
type="text"
|
||||
value="SUM(1 + 2)"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ResultBox-actions"
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--default cxd-Button--size-default cxd-FormulaPicker-action"
|
||||
type="button"
|
||||
>
|
||||
<icon-mock
|
||||
classname="cxd-FormulaPicker-icon icon is-filled icon-function"
|
||||
icon="function"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Panel-footerWrap"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel-btnToolbar cxd-Panel-footer"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--primary cxd-Button--size-default"
|
||||
type="submit"
|
||||
>
|
||||
<span>
|
||||
提交
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`Renderer:input-formula button 1`] = `
|
||||
<div>
|
||||
<div
|
||||
|
@ -11,7 +11,8 @@ afterEach(() => {
|
||||
});
|
||||
|
||||
test('Renderer:button', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
@ -55,6 +56,8 @@ test('Renderer:button', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
expect(container).toMatchSnapshot();
|
||||
fireEvent.click(getByText(/OpenDialog/));
|
||||
await wait(300);
|
||||
|
@ -16,7 +16,8 @@ afterEach(() => {
|
||||
});
|
||||
|
||||
test('Renderer:button-toolbar', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
@ -55,6 +56,8 @@ test('Renderer:button-toolbar', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
expect(container).toMatchSnapshot();
|
||||
fireEvent.click(getByText(/OpenDialog/));
|
||||
await wait(300);
|
||||
|
@ -78,10 +78,13 @@ test('Renderer:input-formula', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
await wait(500);
|
||||
expect(container).toMatchSnapshot();
|
||||
// await wait(500);
|
||||
|
||||
await findByDisplayValue('SUM(1 + 2)');
|
||||
|
||||
// TODO: 不知道为啥切换到 @swc/jest 后不支持
|
||||
// expect(container).toMatchSnapshot();
|
||||
|
||||
// TODO: 貌似 jsdom 不支持 codemirror,进行不下去了
|
||||
|
||||
// const action = document.querySelector('button.cxd-FormulaPicker-action');
|
||||
|
@ -585,7 +585,8 @@ test('Renderer:Nav with icons', async () => {
|
||||
|
||||
// 9.Nav在Dialog里
|
||||
test('Renderer:Nav with Dialog', async () => {
|
||||
const {container, getByText} = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -678,6 +679,8 @@ test('Renderer:Nav with Dialog', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
expect(container).toMatchSnapshot();
|
||||
|
||||
fireEvent.click(getByText('点击弹框'));
|
||||
|
@ -687,7 +687,8 @@ test('Renderer:Page handleAction actionType=url|link', async () => {
|
||||
});
|
||||
|
||||
test('Renderer:Page handleAction actionType=dialog default', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -708,6 +709,8 @@ test('Renderer:Page handleAction actionType=dialog default', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('OpenDialog')).toBeInTheDocument();
|
||||
@ -728,7 +731,8 @@ test('Renderer:Page handleAction actionType=dialog default', async () => {
|
||||
});
|
||||
|
||||
test('Renderer:Page handleAction actionType=dialog mergeData', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -767,6 +771,8 @@ test('Renderer:Page handleAction actionType=dialog mergeData', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('OpenDialog')).toBeInTheDocument();
|
||||
@ -787,7 +793,8 @@ test('Renderer:Page handleAction actionType=dialog mergeData', async () => {
|
||||
});
|
||||
|
||||
test('Renderer:Page handleAction actionType=drawer default', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -808,6 +815,8 @@ test('Renderer:Page handleAction actionType=drawer default', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('OpenDrawer')).toBeInTheDocument();
|
||||
@ -827,7 +836,8 @@ test('Renderer:Page handleAction actionType=drawer default', async () => {
|
||||
});
|
||||
|
||||
test('Renderer:Page handleAction actionType=drawer mergeData', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -866,6 +876,8 @@ test('Renderer:Page handleAction actionType=drawer mergeData', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('OpenDrawer')).toBeInTheDocument();
|
||||
@ -898,7 +910,8 @@ test('Renderer:Page handleAction actionType=ajax', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -919,6 +932,8 @@ test('Renderer:Page handleAction actionType=ajax', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('RequestAjax')).toBeInTheDocument();
|
||||
@ -974,7 +989,8 @@ test('Renderer:Page handleAction actionType=ajax & feedback', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -998,6 +1014,8 @@ test('Renderer:Page handleAction actionType=ajax & feedback', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
fireEvent.click(getByText(/RequestAjax/));
|
||||
await waitFor(() => {
|
||||
@ -1169,7 +1187,8 @@ test('Renderer:Page initApi reload by Dialog action', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {container, getByText, rerender}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -1205,6 +1224,8 @@ test('Renderer:Page initApi reload by Dialog action', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('The variable value is 1')).toBeInTheDocument();
|
||||
@ -1246,7 +1267,8 @@ test('Renderer:Page initApi reload by Drawer action', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {container, getByText, rerender}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -1282,6 +1304,8 @@ test('Renderer:Page initApi reload by Drawer action', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText('The variable value is 1')).toBeInTheDocument();
|
||||
@ -1323,7 +1347,8 @@ test('Renderer:Page initApi reload by Form submit', async () => {
|
||||
}
|
||||
})
|
||||
);
|
||||
const {container, getByText, rerender}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -1358,6 +1383,8 @@ test('Renderer:Page initApi reload by Form submit', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText(/Submit/)).toBeInTheDocument();
|
||||
|
@ -1420,7 +1420,8 @@ test('Renderer:Wizard target', async () => {
|
||||
});
|
||||
|
||||
test('Renderer:Wizard dialog', async () => {
|
||||
const {getByText, container}: any = render(
|
||||
let container: HTMLElement;
|
||||
const renderResult: any = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -1477,6 +1478,8 @@ test('Renderer:Wizard dialog', async () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
const getByText = renderResult.getByText;
|
||||
container = renderResult.container;
|
||||
|
||||
await waitFor(() => {
|
||||
expect(getByText(/OpenDialog/)).toBeInTheDocument();
|
||||
@ -1545,5 +1548,4 @@ test('Renderer:Wizard mode', async () => {
|
||||
expect(steps[0].className).toBe('is-finish');
|
||||
expect(steps[1].className).toBe('is-process');
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -244,4 +244,4 @@
|
||||
"react-dom": ">=16.8.6"
|
||||
},
|
||||
"gitHead": "37d23b4a8eb1c663bc38e8dd9040889ea1526ec4"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user