modal.spec.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // modal.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. describe('modal', () => {
  8. it('useModal', () => {
  9. cy.visit("http://localhost:6006/iframe.html?id=modal--use-modal-demo&viewMode=story");
  10. cy.get(".semi-button").click();
  11. cy.get(".semi-modal-confirm-title-text").contains("old title");
  12. cy.get(".semi-modal-confirm-content").contains("old content");
  13. cy.wait(1000);
  14. cy.get(".semi-modal-confirm-title-text").contains("new title");
  15. cy.get(".semi-modal-confirm-content").contains("new content");
  16. cy.get(".semi-modal-footer .semi-button").last().contains("Confirm");
  17. cy.get(".semi-modal-header .semi-modal-close").click();
  18. cy.get(".semi-modal").should("not.exist");
  19. });
  20. it('useModal destroy', () => {
  21. cy.visit("http://localhost:6006/iframe.html?id=modal--use-modal-destroy&viewMode=story");
  22. cy.get(".semi-button").click();
  23. cy.wait(1000);
  24. cy.get(".semi-modal").should("not.exist");
  25. });
  26. it('useModal afterClose', () => {
  27. cy.visit("http://localhost:6006/iframe.html?id=modal--use-modal-after-close&viewMode=story");
  28. cy.get(".semi-button").click();
  29. cy.get(".semi-modal").should("not.exist");
  30. cy.get(".semi-tag").first().contains("true");
  31. });
  32. it('useModal FocusTrap', ()=>{
  33. cy.visit("http://localhost:6006/iframe.html?id=modal--default&viewMode=story");
  34. cy.get(".semi-button").click();
  35. cy.contains('取消').should('be.focused');
  36. cy.get('input').click();
  37. cy.get('input').realPress('Tab');
  38. cy.contains('hide dialog').should('be.focused');
  39. cy.contains('确定').focus();
  40. cy.contains('确定').realPress('Tab');
  41. cy.get('button[aria-label=close]').should('be.focused');
  42. // TODO:
  43. // we need to remove cypress-plugin-tab cause it can't work with cypress v>10, we use cyress-real-event instead, but it didn't provide combine
  44. // keyboard event in this time,
  45. // cy.get('button[aria-label=close]').tab({ shift: true });
  46. // cy.contains('确定').should('be.focused');
  47. });
  48. it('Full screen', () => {
  49. cy.visit("http://localhost:6006/iframe.html?id=modal--full-screen&viewMode=story");
  50. // 测试 classname 为 .semi-modal-content-fullScreen 的高度和 classname 为 .semi-modal-mask 高度一致
  51. cy.get(".semi-button").click();
  52. cy.get('.semi-modal-content-fullScreen').then($content => {
  53. const contentHeight = $content[0].getBoundingClientRect().height;
  54. cy.get('.semi-modal-mask').then($mask => {
  55. const maskHeight = $mask[0].getBoundingClientRect().height;
  56. expect(contentHeight).to.be.equal(maskHeight);
  57. });
  58. });
  59. });
  60. it('set height', () => {
  61. cy.visit("http://localhost:6006/iframe.html?id=modal--set-height&viewMode=story");
  62. cy.get(".semi-button").click();
  63. cy.get('.semi-modal-content').then($content => {
  64. const contentHeight = $content[0].getBoundingClientRect().height;
  65. expect(contentHeight).to.be.equal(300);
  66. });
  67. });
  68. it('set height in style', () => {
  69. cy.visit("http://localhost:6006/iframe.html?id=modal--set-height-in-style&viewMode=story");
  70. cy.get(".semi-button").click();
  71. cy.get('.semi-modal-content').then($content => {
  72. const contentHeight = $content[0].getBoundingClientRect().height;
  73. expect(contentHeight).to.be.equal(300);
  74. });
  75. });
  76. });