typography.spec.js 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. it('showTooltip', () => {
  12. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--show-tooltip&args=&viewMode=story');
  13. cy.get('.semi-typography-ellipsis').eq(0).trigger('mouseover');
  14. cy.wait(2000);
  15. cy.get('.semi-tooltip-wrapper').contains('css 截断,本内容超出长度限制');
  16. cy.get('.semi-typography-ellipsis').eq(0).trigger('mouseout');
  17. cy.wait(2000);
  18. cy.get('.semi-typography-ellipsis').eq(1).trigger('mouseover');
  19. cy.wait(2000);
  20. cy.get('.semi-tooltip-wrapper').contains('pos 为 middle,无 expanded');
  21. });
  22. // todo: The test currently work only in Electron
  23. // because the clipboard permission is granted when Cypress starts it.
  24. it('copyable', () => {
  25. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--copyable&args=&viewMode=story', {
  26. onBeforeLoad(win) {
  27. cy.stub(win.console, 'log').as('consoleLog'); // 测试时用到控制台的前置步骤
  28. },
  29. });
  30. cy.viewport(800, 1000);
  31. cy.get('.semi-typography-action-copy').eq(1).click();
  32. // 测试 copyable 中 onCopy 回调,控制台应该打印“点击右边的图标复制文本。”
  33. cy.get('@consoleLog').should('be.calledWith', '点击右边的图标复制文本。');
  34. cy.get('span').contains('复制成功');
  35. // cy.window()
  36. // .its('navigator.clipboard')
  37. // .invoke('点击右边的图标复制文本。');
  38. // 测试自定义复制图标是否正确
  39. cy.get('.semi-icon-setting').eq(0).click();
  40. cy.get('.semi-typography-action-copied').eq(1).children('span').contains('复制成功');
  41. });
  42. it('resize', () => {
  43. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--container-resize&args=&viewMode=story');
  44. cy.viewport(800, 1000);
  45. // 第一个,第二个容器宽度与页面一致,此时页面宽为 800,
  46. // 第一个 test,内容长度超出 2 行, css 截断为 2 行
  47. cy.get('.semi-typography-ellipsis').eq(0).should('have.css', 'height').and('eq', '40px');
  48. // 第二个 test, js 截断,有展开按钮
  49. cy.get('.semi-typography-ellipsis-expand').eq(0).contains('展开');
  50. cy.viewport(1860, 1000);
  51. // 屏幕尺寸变化, 内容长度符合尺寸要求,不发生截断
  52. // 第一个 test 需要完整显示, 以下测试仅明确尺寸变化
  53. // Todo: 更直接确定尺寸变化
  54. // 第二个 test 无展开按钮
  55. cy.get('.semi-typography-ellipsis-expand').should('not.exist');
  56. // 重新调整为宽度 800 原尺寸
  57. cy.viewport(800, 1000);
  58. cy.get('.semi-typography-ellipsis-expand').should('not.exist');
  59. cy.get('.semi-typography-ellipsis').eq(0).should('have.css', 'height').and('eq', '40px');
  60. cy.get('.semi-typography-ellipsis-expand').eq(0).contains('展开');
  61. });
  62. it('edge case', () => {
  63. cy.visit('http://127.0.0.1:6006/iframe.html?id=typography--edge-cases&args=&viewMode=story');
  64. cy.viewport(800, 1000);
  65. // 第二个 test 为固定尺寸,容器宽度符合预期,不应该显示展开按钮
  66. cy.get('.semi-typography-ellipsis').eq(1).children('.semi-typography-ellipsis-expand').should('not.exist');
  67. });
  68. });