|
@@ -0,0 +1,501 @@
|
|
|
+describe('image', () => {
|
|
|
+ it('basic image', () => {
|
|
|
+ // 1. Image 基础功能测试,点击图片,打开预览,点击预览区域,关闭预览
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ // 测试图片宽高是否和设置一致, width, height API
|
|
|
+ cy.get('.semi-image-img-preview').should('have.css', 'width').and('eq', '360px');
|
|
|
+ cy.get('.semi-image-img-preview').should('have.css', 'height').and('eq', '200px');
|
|
|
+ // 点击图片区域触发预览
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ // 点击预览非操作区域触发预览关闭
|
|
|
+ cy.get('.semi-image-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('not.exist');
|
|
|
+
|
|
|
+ // 2. Image 设置 preview = {false}, 不可预览
|
|
|
+ cy.get('#preview').children('.semi-switch').click();
|
|
|
+ cy.get('.semi-image-img').click();
|
|
|
+ cy.get('.semi-image-preview').should('not.exist');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('load error Image', () => {
|
|
|
+ // 图片加载失败显示加载失败样式
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--load-error-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-image-status').eq(0).children('.semi-icon-upload_error').should('exist');
|
|
|
+ // 测试自定义加载失败占位图 fallback API
|
|
|
+ cy.get('.semi-image-status').eq(1).children('span').should('have.attr', 'style').should('contain', 'font-size: 50px;');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('controlled Preview single', () => {
|
|
|
+ // 测试单独使用 ImagePreview 的 visible 受控显示功能
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--controlled-preview-single&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-button').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('.semi-image-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('not.exist');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('image show controlled', () => {
|
|
|
+ // 测试 Image 的 visible 受控显示功能
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--image-show-controlled&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('.semi-image-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('not.exist');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('controlled preview multiple', () => {
|
|
|
+ // 测试 多个 Image 的 visbile 受控显示功能
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--controlled-preview-multiple&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-button').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ // 切换到下一张图片
|
|
|
+ cy.get('.semi-image-preview-next').should('be.visible');
|
|
|
+ cy.get('.semi-image-preview-next').click();
|
|
|
+ cy.get('.semi-image-preview-footer-page').children('span').eq(0).contains('2');
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ // 切换到上一张图片
|
|
|
+ cy.get('.semi-image-preview-prev').should('be.visible');
|
|
|
+ cy.get('.semi-image-preview-prev').click();
|
|
|
+ cy.get('.semi-image-preview-footer-page').children('span').eq(0).contains('1');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试鼠标拖拽图片
|
|
|
+ it('mouse drag', () => {
|
|
|
+ cy.viewport(1440, 800);
|
|
|
+ // 设置的视宽1440px, 高800px,根据 ImagePreview 的计算规则(以宽高中最大 padding 为80px(平均分到左右,上下)为准),
|
|
|
+ // 图片的原始尺寸为1440px, 高800px
|
|
|
+ // 对于当前图片而言,会以高为基准,则缩放比例 zoom = (800 - 80)/ 800 = 0.9开始
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.wait(200);
|
|
|
+ // 验证打开预览时候的 zoom 为0.9, 即宽1296px,高为720px
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1296px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '720px');
|
|
|
+ // 点击放大按钮
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').click();
|
|
|
+ cy.wait(200);
|
|
|
+ // 默认的单次点击步长是0.1,预期单次点击之后的 zoom 为 1, 即宽度为和原来的尺寸一致,宽1440px, 高800px
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1440px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '800px');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').click();
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').click();
|
|
|
+ cy.wait(200);
|
|
|
+ // 再经过两次点击放大后,预期 zoom = 1.2, 宽1728px, 高960px, top-80px, left-144px
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1728px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '960px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'top').and('eq', '-80px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'left').and('eq', '-144px');
|
|
|
+
|
|
|
+ // // 测试拖拽,拖拽长度为分别向右,向下拖拽20px
|
|
|
+ // cy.get('.semi-image-preview-image-img').trigger('mousedown', { clientX: 720, clientY: 400 });
|
|
|
+ // cy.wait(200);
|
|
|
+ // cy.get('.semi-image-preview-image-img').trigger('mousemove', { clientX: 740, clientY: 420 }).trigger('mouseup');
|
|
|
+ // // 预期经过拖拽后,宽高保持不变(宽1728px, 高960px), top和left定位增加20px(top-60px, left-124px)
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1728px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '960px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'top').and('eq', '-60px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'left').and('eq', '-124px');
|
|
|
+ // // 测试拖拽边界: 内部逻辑是拖拽过程中,拖拽极限是图片边和容器边重合
|
|
|
+ // // 测试往右下方拖动极限
|
|
|
+ // cy.get('.semi-image-preview-image-img').trigger('mousedown', { clientX: 720, clientY: 400 });
|
|
|
+ // cy.wait(200);
|
|
|
+ // cy.get('.semi-image-preview-image-img').trigger('mousemove', { clientX: 844, clientY: 460 }).trigger('mouseup');
|
|
|
+ // // 鼠标移动距离为向右60px,向下130px,则此刻的top,left应该都是0
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'top').and('eq', '0px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'left').and('eq', '0px');
|
|
|
+ // // 当上下都在图片边缘时候,再次向右下方拖动,因为已经到拖动极限,此时无法再次拖动,top,left值不会再变化
|
|
|
+ // cy.get('.semi-image-preview-image-img').trigger('mousedown', { clientX: 720, clientY: 400 });
|
|
|
+ // cy.wait(200);
|
|
|
+ // cy.get('.semi-image-preview-image-img').trigger('mousemove', { clientX: 730, clientY: 430 }).trigger('mouseup');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'top').and('eq', '0px');
|
|
|
+ // cy.get('.semi-image-preview-image-img').should('have.css', 'left').and('eq', '0px');
|
|
|
+
|
|
|
+ // zoom = 1.2, 宽1728px, 高960px, top-80px, left-144px, 鼠标移动 x * y = 200 * 100,
|
|
|
+ // 图片拖动策略是图片只能够拖动到图片边缘和容器边缘重合,因此预期top和left都为 0px
|
|
|
+ cy.get('.semi-image-preview-image-img').trigger('mousedown', { clientX: 0, clientY: 0 });
|
|
|
+ cy.wait(200);
|
|
|
+ cy.get('.semi-image-preview-image-img').trigger('mousemove', { clientX: 200, clientY: 100 }).trigger('mouseup');
|
|
|
+ cy.wait(200);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'top').and('eq', '0px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'left').and('eq', '0px');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试鼠标滚动滚轮放大,缩小图片
|
|
|
+ it('mouse wheel', () => {
|
|
|
+ cy.viewport(1440, 800);
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ // zoom = 0.9, width = '1296px',height = '720px'
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.wait(200);
|
|
|
+ // 验证滚轮向上滚动放大图片
|
|
|
+ cy.get('.semi-image-preview-image-img').trigger('mouseover', { clientX: 720, clientY: 400 });
|
|
|
+ // 触发 wheel 事件, 参数 deltaY 表示纵向滚动量,
|
|
|
+ cy.get('.semi-image-preview-image-img').trigger('wheel', { deltaY: -10, bubbles: true });
|
|
|
+ // 单次滚动向上滚动滚轮,zoom = zoom + zoomStep = 1, width = '1440px', height = '800px'
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1440px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '800px');
|
|
|
+ // 验证滚轮向下滚动缩小图片
|
|
|
+ cy.get('.semi-image-preview-image-img').trigger('mouseover', { clientX: 720, clientY: 400 });
|
|
|
+ // 触发 wheel 事件, 参数 deltaY 表示纵向滚动量, 验证放大
|
|
|
+ cy.get('.semi-image-preview-image-img').trigger('wheel', { deltaY: 10, bubbles: true });
|
|
|
+ // 单次滚动向下滚动滚轮,zoom = zoom - zoomStep = 0.9, width = '1296px',height = '720px'
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1296px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '720px');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试自定义预览图片功能: 预览图片和 Image 中的图片 src 不同
|
|
|
+ it('custom preview Image', () => {
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--custom-preview-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('.semi-image-img').should('have.attr', 'src', 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/abstract-small.jpeg');
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'src', 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/abstract-big.png');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 通过回调函数 API
|
|
|
+ it('test callback func', () => {
|
|
|
+ cy.viewport(1200, 800);
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--test-call-back-func&args=&viewMode=story', {
|
|
|
+ onBeforeLoad(win) {
|
|
|
+ cy.stub(win.console, 'log').as('consoleLog');
|
|
|
+ },
|
|
|
+ });
|
|
|
+ cy.wait(3000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-img-preview').eq(1).click();
|
|
|
+ cy.wait(100);
|
|
|
+
|
|
|
+ // 测试点击 footer 上一张按钮回调
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_left').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'prev');
|
|
|
+
|
|
|
+ // 测试点击 footer 操作区域下一张按钮回调
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_right').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'next');
|
|
|
+
|
|
|
+ // 测试点击 middle 下一张按钮回调
|
|
|
+ cy.get('.semi-icon-arrow_right').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'next');
|
|
|
+
|
|
|
+ // 测试点击 middle 上一张按钮回调
|
|
|
+ cy.get('.semi-icon-arrow_left').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'prev');
|
|
|
+
|
|
|
+ // 测试预览 footer 操作区域的放大,缩小回调
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').click();
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-minus').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'zoom out');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'zoom in');
|
|
|
+
|
|
|
+ // 测试拖拽按钮是否触发回调
|
|
|
+ const sliderHandleSelector ='.semi-slider-handle';
|
|
|
+ // test knob slide
|
|
|
+ cy.get(sliderHandleSelector)
|
|
|
+ .trigger('mousedown')
|
|
|
+ .trigger('mousemove', { pageX: 1200, pageY: 0 })
|
|
|
+ .trigger('mouseup', { force: true });
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'zoom in');
|
|
|
+
|
|
|
+ cy.get(sliderHandleSelector)
|
|
|
+ .trigger('mousedown')
|
|
|
+ .trigger('mousemove', { pageX: 0, pageY: 0 })
|
|
|
+ .trigger('mouseup', { force: true });
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'zoom out');
|
|
|
+
|
|
|
+ // 测试 footer 下载回调
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-download').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'download');
|
|
|
+
|
|
|
+ // 测试 footer 旋转回调
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-rotate').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'rotate change');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 infinite API
|
|
|
+ it('infinite load', () => {
|
|
|
+ // 设置 infinite = true
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-preview&args=&viewMode=story');
|
|
|
+ cy.wait(3000);
|
|
|
+ cy.get('#infinite').children('.semi-switch').click();
|
|
|
+ cy.get('.semi-image-img-preview').eq(1).click();
|
|
|
+ cy.wait(100);
|
|
|
+ cy.get('.semi-image-preview-prev').click();
|
|
|
+ cy.wait(100);
|
|
|
+ // 到第一张图片时候,可以通过 prev 按钮 切换到最后一张
|
|
|
+ cy.get('.semi-image-preview-prev').should('exist').click();
|
|
|
+ cy.wait(100);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'src', 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/beach.jpeg');
|
|
|
+ // 从最后一张图片,可以切换到前一张图片
|
|
|
+ cy.get('.semi-image-preview-next').should('exist').click();
|
|
|
+ cy.wait(100);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'src', 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/lion.jpeg');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 closeOnEsc API
|
|
|
+ it('basic image', () => {
|
|
|
+ // 1. Image 基础功能测试,点击图片,打开预览,点击预览区域,关闭预览
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ // 测试 esc 退出预览功能
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('body').type('{esc}', { force: true });
|
|
|
+ cy.get('.semi-image-preview').should('not.exist');
|
|
|
+ // closeOnEsc = false, 关闭点击 esc 退出预览功能
|
|
|
+ cy.get('#escOut').children('.semi-switch').click();
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('body').type('{esc}', { force: true });
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('.semi-image-preview').click();
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 disableDownload API
|
|
|
+ it('disable download', () => {
|
|
|
+ // 设置 disableDownload,无法下载
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('#disableDownload').children('.semi-switch').click();
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-download').should('have.class', 'semi-image-preview-footer-disabled');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 maskClosable API
|
|
|
+ it('maskClosable', () => {
|
|
|
+ // 设置 disableDownload,无法下载
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-image&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('#maskClosable').children('.semi-switch').click();
|
|
|
+ cy.get('.semi-image-img-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('.semi-image-preview').click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ cy.get('.semi-icon-close').click();
|
|
|
+ cy.get('.semi-image-preview').should('not.exist');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 getPopupContainer API
|
|
|
+ it('custom container', () => {
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--custom-container&args=&viewMode=story');
|
|
|
+ cy.wait(3000);
|
|
|
+ cy.get('.semi-image-img-preview').eq(0).click();
|
|
|
+ cy.get('.semi-image-preview').parent('.semi-portal').parent().should('have.attr', 'id', 'container');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试自定义预览顶部信息 renderHeader API
|
|
|
+ it('custom render top', () => {
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--custom-render-title&args=&viewMode=story');
|
|
|
+ cy.wait(3000);
|
|
|
+ cy.get('.semi-image-img-preview').eq(0).click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+ // 点击预览后,title 部分的信息为自定义信息
|
|
|
+ cy.get('.semi-image-preview-header-title').children('div').contains('lamp1');
|
|
|
+ cy.get('.semi-image-preview-next').should('be.visible');
|
|
|
+ cy.get('.semi-image-preview-next').click();
|
|
|
+ // 切换图片后,title 部分会切换为对应的自定义信息
|
|
|
+ cy.get('.semi-image-preview-header-title').children('div').contains('lamp2');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试自定义预览操作区 renderPreviewMenu API
|
|
|
+ it('custom render footer', () => {
|
|
|
+ cy.viewport(1200, 800);
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--custom-render-footer-menu&args=&viewMode=story', {
|
|
|
+ onBeforeLoad(win) {
|
|
|
+ cy.stub(win.console, 'log').as('consoleLog');
|
|
|
+ },
|
|
|
+ });
|
|
|
+ cy.wait(3000);
|
|
|
+ cy.get('.semi-image-img-preview').eq(0).click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+
|
|
|
+ // 点击预览后,footer操作区域信息为自定义页脚信息
|
|
|
+ cy.get('.semi-icon-chevron_right').click();
|
|
|
+ cy.wait(500);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'src', 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/seaside.jpeg');
|
|
|
+ cy.get('.semi-icon-chevron_left').click();
|
|
|
+ cy.wait(500);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'src', 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/lion.jpeg');
|
|
|
+
|
|
|
+ // 对于 lion.jpeg(原尺寸1080 * 720), 因为container(1200 * 800),初始 zoom 为 1 (1080 * 720)
|
|
|
+ cy.get('.semi-icon-minus').click();
|
|
|
+ cy.wait(500);
|
|
|
+ // zoom = 0.9, width * height = 972 * 648
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '972px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '648px');
|
|
|
+
|
|
|
+ cy.get('.semi-icon-plus').click();
|
|
|
+ cy.wait(500);
|
|
|
+ // zoom = 1, width * height = 1080 * 720
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1080px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '720px');
|
|
|
+
|
|
|
+ cy.get('.semi-icon-plus').click();
|
|
|
+ cy.get('.semi-icon-plus').click();
|
|
|
+ cy.wait(500);
|
|
|
+ // zoom = 1.2,
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1296px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '864px');
|
|
|
+
|
|
|
+ // 点击原始尺寸按钮,zoom = 1, width * height = 1080 * 720
|
|
|
+ cy.get('.semi-icon-real_size_stroked').click();
|
|
|
+ cy.wait(500);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1080px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '720px');
|
|
|
+
|
|
|
+ cy.get('.semi-icon-minus').click();
|
|
|
+ cy.get('.semi-icon-minus').click();
|
|
|
+ cy.wait(500);
|
|
|
+ // zoom = 0.8, width * height = 864 * 576
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '864px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '576px');
|
|
|
+
|
|
|
+ // 在 container 1200 * 800时, 适应页面尺寸为 zoom 为 1, width * height = 1080 * 720
|
|
|
+ cy.get('.semi-icon-window_adaption_stroked').click();
|
|
|
+ cy.wait(500);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'width').and('eq', '1080px');
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.css', 'height').and('eq', '720px');
|
|
|
+
|
|
|
+ // 测试点击向右旋转,向左旋转按键
|
|
|
+ cy.get('.semi-icon-rotate').eq(0).click();
|
|
|
+ cy.wait(500);
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'style').should('contain', 'transform: rotate(90deg)');
|
|
|
+ cy.get('.semi-icon-rotate').eq(1).click();
|
|
|
+ cy.get('.semi-image-preview-image-img').should('have.attr', 'style').should('contain', 'transform: rotate(0deg)');
|
|
|
+
|
|
|
+ // 测试下载按键
|
|
|
+ cy.get('.semi-icon-download').click();
|
|
|
+ cy.get('@consoleLog').should('be.calledWith', 'download');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 showTooltip API
|
|
|
+ it('show operation tooltip', () => {
|
|
|
+ // 测试 Image 的 预览 footer 操作区域 hover 到相关图标是否 tooltip 提示
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-preview&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('#showTooltip').children('.semi-switch').click();
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-image-img-preview').eq(1).click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_left').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('上一张');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_left').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_right').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('下一张');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_right').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-minus').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('缩小');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-minus').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('放大');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-real_size_stroked').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('原始尺寸');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-real_size_stroked').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-real_size_stroked').click();
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-window_adaption_stroked').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('适应页面');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-window_adaption_stroked').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-rotate').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('旋转');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-rotate').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-download').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('下载');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-download').trigger('mouseout');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 测试 xxxTooltip API
|
|
|
+ it('custom operation tooltip', () => {
|
|
|
+ // 测试 Image 的 预览 footer 操作区域 hover 到相关图标是否 自定义 tooltip 提示
|
|
|
+ cy.visit('http://127.0.0.1:6006/iframe.html?id=image--basic-preview&args=&viewMode=story');
|
|
|
+ cy.wait(2000);
|
|
|
+ cy.get('#showTooltip').children('.semi-switch').click();
|
|
|
+ cy.get('#customTooltip').children('.semi-switch').click();
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-image-img-preview').eq(1).click();
|
|
|
+ cy.get('.semi-image-preview').should('exist');
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_left').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('Prev');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_left').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_right').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('Next');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-chevron_right').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-minus').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('ZoomOut');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-minus').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('ZoomIn');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-plus').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-real_size_stroked').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('Original size');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-real_size_stroked').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-real_size_stroked').click();
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-window_adaption_stroked').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('Adaption');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-window_adaption_stroked').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-rotate').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('Rotate');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-rotate').trigger('mouseout');
|
|
|
+ cy.wait(1000);
|
|
|
+
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-download').trigger('mouseover');
|
|
|
+ cy.wait(1000);
|
|
|
+ cy.get('.semi-tooltip-wrapper').contains('Download');
|
|
|
+ cy.get('.semi-image-preview-footer').children('.semi-icon-download').trigger('mouseout');
|
|
|
+ });
|
|
|
+});
|