typography.spec.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. describe('typography', () => {
  2. it('ellipsis', () => {
  3. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--ellipsis-collapsible&args=&viewMode=story');
  4. cy.viewport(500, 500);
  5. cy.get('.semi-typography span').eq(0).contains('...');
  6. cy.get('.semi-typography-ellipsis-expand').eq(0).contains('展开').click();
  7. cy.get('.semi-typography').eq(0).contains('四大优势');
  8. cy.get('.semi-typography-ellipsis-expand').eq(0).contains('收起').click();
  9. cy.get('.semi-typography span').eq(0).contains('...');
  10. });
  11. // Todo:本地测试无问题,线上会挂,先忽略
  12. // it('ellipsis from center', () => {
  13. // cy.visit('http://localhost:6006/iframe.html?args=&id=typography--ellipsis-from-center');
  14. // cy.viewport(800, 1000);
  15. // cy.get('[data-cy=nowrap-middile-ellipsis1]').should('contain', '...');
  16. // cy.get('[data-cy=nowrap-middile-ellipsis2]').should('contain', '...');
  17. // });
  18. // Todo:本地测试无问题,线上会挂,先忽略
  19. // it('showTooltip', () => {
  20. // cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--show-tooltip&args=&viewMode=story');
  21. // cy.get('.semi-typography-ellipsis').eq(0).trigger('mouseover');
  22. // cy.wait(2000);
  23. // cy.get('.semi-tooltip-wrapper').contains('css 截断,本内容超出长度限制');
  24. // cy.get('.semi-typography-ellipsis').eq(0).trigger('mouseout');
  25. // cy.wait(2000);
  26. // cy.get('.semi-typography-ellipsis').eq(1).trigger('mouseover');
  27. // cy.wait(2000);
  28. // cy.get('.semi-tooltip-wrapper').contains('pos 为 middle,无 expanded');
  29. // });
  30. // todo: The test currently work only in Electron
  31. // because the clipboard permission is granted when Cypress starts it.
  32. it('copyable', () => {
  33. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--copyable&args=&viewMode=story', {
  34. onBeforeLoad(win) {
  35. cy.stub(win.console, 'log').as('consoleLog'); // 测试时用到控制台的前置步骤
  36. },
  37. });
  38. cy.viewport(800, 1000);
  39. cy.get('.semi-typography-action-copy').eq(1).click();
  40. // 测试 copyable 中 onCopy 回调,控制台应该打印“点击右边的图标复制文本。”
  41. cy.get('@consoleLog').should('be.calledWith', '点击右边的图标复制文本。');
  42. cy.get('span').contains('复制成功');
  43. // cy.window()
  44. // .its('navigator.clipboard')
  45. // .invoke('点击右边的图标复制文本。');
  46. // 测试自定义复制图标是否正确
  47. cy.get('.semi-icon-setting').eq(0).click();
  48. cy.get('.semi-typography-action-copied').eq(1).children('span').contains('复制成功');
  49. });
  50. // Todo:本地测试无问题,线上会挂,先忽略
  51. // it('resize', () => {
  52. // cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--container-resize&args=&viewMode=story');
  53. // cy.viewport(800, 1000);
  54. // // 第一个,第二个容器宽度与页面一致,此时页面宽为 800,
  55. // // 第一个 test,内容长度超出 2 行, css 截断为 2 行
  56. // cy.get('.semi-typography-ellipsis').eq(0).should('have.css', 'height').and('eq', '40px');
  57. // // 第二个 test, js 截断,有展开按钮
  58. // cy.get('.semi-typography-ellipsis-expand').eq(0).contains('展开');
  59. // cy.viewport(1860, 1000);
  60. // // 屏幕尺寸变化, 内容长度符合尺寸要求,不发生截断
  61. // // 第一个 test 需要完整显示, 以下测试仅明确尺寸变化
  62. // // Todo: 更直接确定尺寸变化
  63. // // 第二个 test 无展开按钮
  64. // cy.get('.semi-typography-ellipsis-expand').should('not.exist');
  65. // // 重新调整为宽度 800 原尺寸
  66. // cy.viewport(800, 1000);
  67. // cy.get('.semi-typography-ellipsis-expand').should('not.exist');
  68. // cy.get('.semi-typography-ellipsis').eq(0).should('have.css', 'height').and('eq', '40px');
  69. // cy.get('.semi-typography-ellipsis-expand').eq(0).contains('展开');
  70. // });
  71. it('edge case', () => {
  72. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--edge-cases&args=&viewMode=story');
  73. cy.viewport(800, 1000);
  74. // 第二个 test 为固定尺寸,容器宽度符合预期,不应该显示展开按钮
  75. cy.get('.semi-typography-ellipsis').eq(1).children('.semi-typography-ellipsis-expand').should('not.exist');
  76. });
  77. it('js ellipsis, no truncate, no tooltip', () => {
  78. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--js-ellipsis-no-tooltip&args=&viewMode=story');
  79. cy.viewport(800, 1000);
  80. cy.get('.semi-typography').trigger('mouseover');
  81. cy.wait(1000);
  82. cy.get('.semi-tooltip-content').should('not.exist');;
  83. });
  84. // work in local, work in online chrome,fail in test-coverage/cypress, ignore
  85. // it('custom render tooltip', () => {
  86. // cy.viewport(800, 1000);
  87. // cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--custom-tooltip&args=&viewMode=story');
  88. // cy.get('.semi-typography').trigger('mouseover');
  89. // cy.wait(2000);
  90. // cy.get('.semi-tooltip-wrapper').eq(0).should('have.attr', 'style').should('contain', 'background-color: var(--semi-color-primary)');
  91. // });
  92. // 功能符合预期,通过 mouseover trigger 有问题,暂时忽略
  93. // it('ellipsis popover cls name', () => {
  94. // cy.viewport(800, 1000);
  95. // cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--global-ellipsis-popover-cls&args=&viewMode=story');
  96. // cy.get('.semi-typography').trigger('mouseover');
  97. // cy.wait(2000);
  98. // cy.get('.testPopoverCls.semi-typography-ellipsis-popover').should('exist');
  99. // });
  100. // work in local, fail in online, ignore
  101. // it('single row css ellipsis accurate', () => {
  102. // cy.viewport(800, 1000);
  103. // cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--single-row-css-ellipsis-accurate&args=&viewMode=story');
  104. // cy.get('.semi-typography').trigger('mouseover');
  105. // cy.wait(2000);
  106. // cy.get('.semi-tooltip-content').contains('Latin America-巴西-圣保罗');
  107. // });
  108. });