form.spec.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. // form.spec.js created with Cypress
  2. //
  3. // Start writing your Cypress tests below!
  4. // If you're unfamiliar with how Cypress works,
  5. // check out the link below and learn how to write your first test:
  6. // https://on.cypress.io/writing-first-test
  7. /**
  8. * why use `.then`?
  9. * @see https://docs.cypress.io/guides/core-concepts/variables-and-aliases#Return-Values
  10. */
  11. const D2C = { name: 'Semi D2C', role: 'Engineer' };
  12. const C2D = { name: 'Semi C2D', role: 'Designer' };
  13. const DSM = { name: 'Semi DSM', role: 'Designer' };
  14. describe('Form', () => {
  15. it('formApi-setValue with array field path, 3 -> 2, remove middle line field', () => {
  16. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--use-form-api-set-value-update-array');
  17. cy.get(':nth-child(3) > .semi-button').click();
  18. // line 1
  19. cy.get('[x-field-id="effects[0].name"] > .semi-form-field-main > .semi-input-wrapper > input').should('have.value', '1-name');
  20. cy.get('[x-field-id="effects[0].type"] > .semi-form-field-main > .semi-input-wrapper > input').should('have.value', '1-type');
  21. // line 2
  22. cy.get('[x-field-id="effects[1].name"] > .semi-form-field-main > .semi-input-wrapper > input').should('have.value', '3-name');
  23. cy.get('[x-field-id="effects[1].type"] > .semi-form-field-main > .semi-input-wrapper > input').should('have.value', '3-type');
  24. // cy.get('body').find('.semi-popover .semi-datepicker').should('have.length', 0);
  25. });
  26. // ❌ 发现了bug
  27. // modify
  28. it('Basic usage - modify、add blank row、add withInitValue row', () => {
  29. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--basic-array-field-demo');
  30. cy.get('#data-0-name').type('-new');
  31. cy.get('#data-0-role').type('-new');
  32. cy.get('#data-0-name').should('have.value', 'Semi D2C-new');
  33. cy.get('#data-0-role').should('have.value', 'Engineer-new');
  34. // add blank row
  35. cy.get('#add').click();
  36. cy.get('#data-2-name').should('have.value', '');
  37. cy.get('#data-2-role').should('have.value', '');
  38. // add withInitValue row
  39. cy.get('#addWithInit').click();
  40. cy.get('#data-3-name').should('have.value', 'Semi New-3');
  41. cy.get('#data-3-role').should('have.value', 'Designer');
  42. });
  43. it('Basic usage - add withInitValue row、add blank row', () => {
  44. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--basic-array-field-demo');
  45. // add withInitValue row
  46. cy.get('#addWithInit').click();
  47. cy.get('#data-2-name').should('have.value', 'Semi New-3');
  48. cy.get('#data-2-role').should('have.value', 'Designer');
  49. // add blank row
  50. cy.get('#add').click();
  51. cy.get('#data-3-name').should('have.value', '');
  52. cy.get('#data-3-role').should('have.value', '');
  53. });
  54. // // remove row
  55. it('Remove row - 3 -> 2, remove middle', () => {
  56. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--remove-demo');
  57. cy.get('#data-1 button').click();
  58. cy.get('#data-0-name').should('have.value', D2C.name);
  59. cy.get('#data-0-role').should('have.value', D2C.role);
  60. cy.get('#data-1-name').should('have.value', DSM.name);
  61. cy.get('#data-1-role').should('have.value', DSM.role);
  62. });
  63. it('Remove row - 3 -> 2, remove middle, 2 -> 1, remove head', () => {
  64. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--remove-demo');
  65. cy.get('#data-1 button').click();
  66. cy.get('#data-0-name').should('have.value', D2C.name);
  67. cy.get('#data-0-role').should('have.value', D2C.role);
  68. cy.get('#data-1-name').should('have.value', DSM.name);
  69. cy.get('#data-1-role').should('have.value', DSM.role);
  70. cy.get('#data-0 button').click();
  71. cy.get('#data-0-name').should('have.value', DSM.name);
  72. cy.get('#data-0-role').should('have.value', DSM.role);
  73. cy.get('#data-1').should('not.exist');
  74. });
  75. it('Remove row - 3 -> 2, remove head', () => {
  76. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--remove-demo');
  77. cy.get('#data-2').should('exist');
  78. cy.get('#data-0 button').click();
  79. cy.get('#data-2').should('not.exist');
  80. cy.get('#data-0-name').should('have.value', C2D.name);
  81. cy.get('#data-0-role').should('have.value', C2D.role);
  82. cy.get('#data-1-name').should('have.value', DSM.name);
  83. cy.get('#data-1-role').should('have.value', DSM.role);
  84. cy.get('#data-0 button').click();
  85. cy.get('#data-0-name').should('have.value', DSM.name);
  86. cy.get('#data-0-role').should('have.value', DSM.role);
  87. });
  88. it('Remove row - 3 -> 2, remove last', () => {
  89. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--remove-demo');
  90. cy.get('#data-2').should('exist');
  91. cy.get('#data-2 button').click();
  92. cy.get('#data-2').should('not.exist');
  93. cy.get('#data-0-name').should('have.value', D2C.name);
  94. cy.get('#data-0-role').should('have.value', D2C.role);
  95. cy.get('#data-1-name').should('have.value', C2D.name);
  96. cy.get('#data-1-role').should('have.value', C2D.role);
  97. });
  98. // it('Basic usage - add、remove、reset', () => { });
  99. // reset
  100. it('Reset Usage: modify => reset ', () => {
  101. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--reset-demo');
  102. cy.get('#data-0-name').type('-new');
  103. cy.get('#data-0-role').type('-new');
  104. cy.get('#data-0-name').should('have.value', `${D2C.name}-new`);
  105. cy.get('#data-0-role').should('have.value', `${D2C.role}-new`);
  106. cy.get('button[type=reset]').click();
  107. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  108. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  109. });
  110. it('Reset Usage: length 2 -> 1 => reset ', () => {
  111. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--reset-demo');
  112. cy.get('#data-0 button').click();
  113. cy.get('#data-1').should('not.exist');
  114. cy.get('button[type=reset]').click();
  115. // cy.get('#data-1').should('exist');
  116. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  117. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  118. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  119. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  120. });
  121. it('Reset Usage: length 2 -> 0 -> 3 => reset ', () => {
  122. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--reset-demo');
  123. cy.get('#data-1 button').click();
  124. cy.get('#data-0 button').click();
  125. cy.get('#data-0').should('not.exist');
  126. cy.get('#addWithInit').click();
  127. cy.get('#addWithInit').click();
  128. cy.get('#addWithInit').click();
  129. cy.get('#data-2').should('exist');
  130. cy.get('button[type=reset]').click();
  131. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  132. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  133. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  134. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  135. cy.get('#data-2').should('not.exist');
  136. });
  137. it('Reset Usage: length 2 -> 0 -> 2 => reset ', () => {
  138. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--reset-demo');
  139. cy.get('#data-1 button').click();
  140. cy.get('#data-0 button').click();
  141. cy.get('#data-0').should('not.exist');
  142. cy.get('#addWithInit').click();
  143. cy.get('#addWithInit').click();
  144. cy.get('.line').should('have.length', 2);
  145. cy.get('button[type=reset]').click();
  146. cy.get('#data-2').should('not.exist');
  147. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  148. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  149. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  150. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  151. });
  152. it('Combine Usage', () => {
  153. // add -> remove -> modify
  154. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--basic-array-field-demo', {
  155. onBeforeLoad(win) {
  156. cy.stub(win.console, 'log').as('consoleLog');
  157. },
  158. });
  159. cy.get('#addWithInit').click();
  160. cy.get('#data-1 button').click();
  161. cy.get('#data-0-role').type('-0');
  162. cy.get('#data-0-name').type('-0');
  163. cy.get('#data-0-name').should('have.value', `${D2C.name}-0`);
  164. cy.get('#data-0-role').should('have.value', `${D2C.role}-0`);
  165. cy.get('#data-1-name').should('have.value', `Semi New-3`);
  166. cy.get('#data-1-role').should('have.value', `Designer`);
  167. });
  168. it('combine usage-2', () => {
  169. // add -> remove -> modify -> reset
  170. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--basic-array-field-demo');
  171. cy.get('#data-1 button').click();
  172. cy.get('#data-0-role').type('-0');
  173. cy.get('#data-0-name').type('-0');
  174. cy.get('button[type=reset]').click();
  175. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  176. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  177. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  178. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  179. });
  180. it('sync setValue - modify value, 2 -> 2', () => {
  181. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  182. cy.get('#updateSync').click();
  183. cy.get('#data-0-name').should('have.value', `${D2C.name}-0`);
  184. cy.get('#data-0-role').should('have.value', `${D2C.role}-0`);
  185. cy.get('#data-1-name').should('have.value', `${C2D.name}-1`);
  186. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  187. });
  188. it('sync setValue - add, 2 -> 3, add tail', () => {
  189. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  190. cy.get('#addTailSync').click();
  191. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  192. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  193. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  194. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  195. cy.get('#data-2-name').should('have.value', `${DSM.name}`);
  196. cy.get('#data-2-role').should('have.value', `${DSM.role}`);
  197. });
  198. it('sync setValue - add, 2 -> 3, add first', () => {
  199. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  200. cy.get('#addHeadSync').click();
  201. cy.get('#data-0-name').should('have.value', `${DSM.name}`);
  202. cy.get('#data-0-role').should('have.value', `${DSM.role}`);
  203. cy.get('#data-1-name').should('have.value', `${D2C.name}`);
  204. cy.get('#data-1-role').should('have.value', `${D2C.role}`);
  205. cy.get('#data-2-name').should('have.value', `${C2D.name}`);
  206. cy.get('#data-2-role').should('have.value', `${C2D.role}`);
  207. });
  208. it('sync setValue - add, 2 -> 3, add middle', () => {
  209. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  210. cy.get('#addMiddleSync').click();
  211. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  212. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  213. cy.get('#data-2-name').should('have.value', `${C2D.name}`);
  214. cy.get('#data-2-role').should('have.value', `${C2D.role}`);
  215. cy.get('#data-1-name').should('have.value', `${DSM.name}`);
  216. cy.get('#data-1-role').should('have.value', `${DSM.role}`);
  217. });
  218. it('sync setValue - remove, 3 -> 2, remove first', () => {
  219. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  220. cy.get('#addTailSync').click();
  221. cy.get('#removeHeadSync').click();
  222. cy.get('#data-0-name').should('have.value', `${C2D.name}`);
  223. cy.get('#data-0-role').should('have.value', `${C2D.role}`);
  224. cy.get('#data-1-name').should('have.value', `${DSM.name}`);
  225. cy.get('#data-1-role').should('have.value', `${DSM.role}`);
  226. });
  227. it('sync setValue - remove, 3 -> 2, remove middle', () => {
  228. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  229. cy.get('#addTailSync').click();
  230. cy.get('#removeMiddleSync').click();
  231. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  232. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  233. cy.get('#data-1-name').should('have.value', `${DSM.name}`);
  234. cy.get('#data-1-role').should('have.value', `${DSM.role}`);
  235. });
  236. it('sync setValue - remove, 3 -> 2, remove tail', () => {
  237. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  238. cy.get('#addTailSync').click();
  239. cy.get('#removeTailSync').click();
  240. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  241. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  242. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  243. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  244. });
  245. it('sync setValue - remove, 3 -> 0, remove all', () => {
  246. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-demo');
  247. cy.get('#addTailSync').click();
  248. cy.get('#removeAllSync').click();
  249. cy.get('.line').should('have.length', 0);
  250. });
  251. it('Async setValue - modify value, 2 -> 2', () => {
  252. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  253. cy.get('#updateAsync').click();
  254. cy.wait(500);
  255. cy.get('#data-0-name').should('have.value', `${D2C.name}-0`);
  256. cy.get('#data-0-role').should('have.value', `${D2C.role}-0`);
  257. cy.get('#data-1-name').should('have.value', `${C2D.name}-1`);
  258. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  259. });
  260. it('Async setValue - add, 2 -> 3, add tail', () => {
  261. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  262. cy.get('#addTailAsync').click();
  263. cy.wait(500);
  264. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  265. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  266. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  267. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  268. cy.get('#data-2-name').should('have.value', `${DSM.name}`);
  269. cy.get('#data-2-role').should('have.value', `${DSM.role}`);
  270. });
  271. it('Async setValue - add, 2 -> 3, add first', () => {
  272. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  273. cy.get('#addHeadAsync').click();
  274. cy.wait(500);
  275. cy.get('#data-0-name').should('have.value', `${DSM.name}`);
  276. cy.get('#data-0-role').should('have.value', `${DSM.role}`);
  277. cy.get('#data-1-name').should('have.value', `${D2C.name}`);
  278. cy.get('#data-1-role').should('have.value', `${D2C.role}`);
  279. cy.get('#data-2-name').should('have.value', `${C2D.name}`);
  280. cy.get('#data-2-role').should('have.value', `${C2D.role}`);
  281. });
  282. it('Async setValue - add, 2 -> 3, add middle', () => {
  283. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  284. cy.get('#addMiddleAsync').click();
  285. cy.wait(500);
  286. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  287. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  288. cy.get('#data-2-name').should('have.value', `${C2D.name}`);
  289. cy.get('#data-2-role').should('have.value', `${C2D.role}`);
  290. cy.get('#data-1-name').should('have.value', `${DSM.name}`);
  291. cy.get('#data-1-role').should('have.value', `${DSM.role}`);
  292. });
  293. it('Async setValue - remove, 3 -> 2, remove first', () => {
  294. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  295. cy.get('#addTailAsync').click();
  296. cy.wait(500);
  297. cy.get('#removeHeadAsync').click();
  298. cy.wait(500);
  299. cy.get('#data-0-name').should('have.value', `${C2D.name}`);
  300. cy.get('#data-0-role').should('have.value', `${C2D.role}`);
  301. cy.get('#data-1-name').should('have.value', `${DSM.name}`);
  302. cy.get('#data-1-role').should('have.value', `${DSM.role}`);
  303. });
  304. it('Async setValue - remove, 3 -> 2, remove middle', () => {
  305. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  306. cy.get('#addTailAsync').click();
  307. cy.wait(500);
  308. cy.get('#removeMiddleAsync').click();
  309. cy.wait(500);
  310. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  311. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  312. cy.get('#data-1-name').should('have.value', `${DSM.name}`);
  313. cy.get('#data-1-role').should('have.value', `${DSM.role}`);
  314. });
  315. it('Async setValue - remove, 3 -> 2, remove tail', () => {
  316. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  317. cy.get('#addTailAsync').click();
  318. cy.wait(500);
  319. cy.get('#removeTailAsync').click();
  320. cy.wait(500);
  321. cy.get('#data-0-name').should('have.value', `${D2C.name}`);
  322. cy.get('#data-0-role').should('have.value', `${D2C.role}`);
  323. cy.get('#data-1-name').should('have.value', `${C2D.name}`);
  324. cy.get('#data-1-role').should('have.value', `${C2D.role}`);
  325. });
  326. it('Async setValue - remove, 2 -> 0, remove all', () => {
  327. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--manual-set-async-demo');
  328. cy.get('#removeAllAsync').click();
  329. cy.wait(500);
  330. cy.get('.line').should('have.length', 0);
  331. });
  332. // TODO
  333. it('2 Nested ArrayField - basic', () => {
  334. cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--basic-nested-demo');
  335. // check initValue
  336. cy.get('#data-0-name').should('have.value', `0`);
  337. cy.get('#data-0-rule-0-type').should('have.value', `0-0-type`);
  338. cy.get('#data-0-rule-0-desc').should('have.value', `0-0-desc`);
  339. cy.get('#data-0-rule-1-type').should('have.value', `0-1-type`);
  340. cy.get('#data-0-rule-1-desc').should('have.value', `0-1-desc`);
  341. cy.get('#data-1-name').should('have.value', `1`);
  342. cy.get('#data-1-rule-0-type').should('have.value', `1-0-type`);
  343. cy.get('#data-1-rule-0-desc').should('have.value', `1-0-desc`);
  344. });
  345. it('2 Nested ArrayField - add / remove / reset', () => {
  346. // cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/form--basic-nested-demo');
  347. // // add level 0
  348. cy.get('#data-1-add').click();
  349. cy.get('#data-2-name').should('have.value', `2`);
  350. cy.get('#data-2-rule-0-type').should('have.value', `2-0-type`);
  351. cy.get('#data-2-rule-0-desc').should('have.value', `2-0-desc`);
  352. // // add level 1
  353. cy.get('#data-0-rule-1-add').click();
  354. cy.get('#data-0-rule-2-type').should('have.value', `0-2-type`);
  355. cy.get('#data-0-rule-2-desc').should('have.value', `0-2-desc`);
  356. cy.get('#data-2-rule-0-add').click();
  357. cy.get('#data-2-rule-1-type').should('have.value', `2-1-type`);
  358. cy.get('#data-2-rule-1-desc').should('have.value', `2-1-desc`);
  359. // remove
  360. /**
  361. * 0 => 0
  362. * 0-0 0-0
  363. * 0-1 0-2
  364. * 0-2
  365. * 1 1
  366. * 1-0
  367. * 2 2
  368. * 2-0 2-0
  369. * 2-1
  370. */
  371. cy.get('#data-0-rule-1-remove').click();
  372. cy.get('#data-1-rule-0-remove').click();
  373. cy.get('#data-2-rule-1-remove').click();
  374. cy.get('#data-0-name').should('have.value', `0`);
  375. cy.get('#data-0-rule-0-type').should('have.value', `0-0-type`);
  376. cy.get('#data-0-rule-0-desc').should('have.value', `0-0-desc`);
  377. cy.get('#data-0-rule-1-type').should('have.value', `0-2-type`); // cause remove middle
  378. cy.get('#data-0-rule-1-desc').should('have.value', `0-2-desc`); // cause remove middle
  379. cy.get('#data-1-name').should('have.value', `1`);
  380. cy.get('#data-1-rule-0-type').should('not.exist');
  381. cy.get('#data-1-rule-0-desc').should('not.exist');
  382. cy.get('#data-2-name').should('have.value', `2`);
  383. cy.get('#data-2-rule-0-type').should('have.value', `2-0-type`); // cause remove tail
  384. cy.get('#data-2-rule-0-desc').should('have.value', `2-0-desc`); // cause remove tail
  385. // reset
  386. //❌ TODO still exist bug here
  387. });
  388. // it('2 Nested ArrayField - formApi.setValues', () => { });
  389. // it('2 Nested ArrayField - formApi.setValue level-1', () => { });
  390. // it('2 Nested ArrayField - formApi.setValue level-2', () => { });
  391. // it('Init - Form Props initValues、ArrayField initValue、Field initValue', () => {
  392. // // 一个 Form 三个 ArrayField
  393. // });
  394. // it('Init - combine', () => {});
  395. // it('sync setValues - modify', () => { });
  396. // it('sync setValues - add', () => { });
  397. // it('sync setValues - remove', () => { });
  398. // it('Async setValues', () => { });
  399. });