Commit 9c7fcf30 authored by Jiewei Qian's avatar Jiewei Qian Committed by hetech

chore: update test deps and conf (#14735)

* test: run in headless chrome

* chore: update travis node version

* chore: upgrade test deps

* test: fix tests

* test: support async await

* test: fix tree test case

* test: fix tree test cases

* test: fix popper test case
parent e6cb64b7
{ {
"env": {
"mocha": true
},
"globals": { "globals": {
"ga": true, "ga": true
"expect": true,
"sinon": true
}, },
"plugins": ["html", "json"], "plugins": ["html", "json"],
"extends": "elemefe", "extends": "elemefe",
......
sudo: false sudo: false
language: node_js language: node_js
node_js: 8 node_js: 10
addons:
chrome: stable
before_install: before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- export TRAVIS_COMMIT_MSG="[deploy] $(git log --format='%h - %B' --no-merges -n 1)" - export TRAVIS_COMMIT_MSG="[deploy] $(git log --format='%h - %B' --no-merges -n 1)"
- export TRAVIS_COMMIT_USER="$(git log --no-merges -n 1 --format=%an)" - export TRAVIS_COMMIT_USER="$(git log --no-merges -n 1 --format=%an)"
- export TRAVIS_COMMIT_EMAIL="$(git log --no-merges -n 1 --format=%ae)" - export TRAVIS_COMMIT_EMAIL="$(git log --no-merges -n 1 --format=%ae)"
......
...@@ -81,10 +81,11 @@ ...@@ -81,10 +81,11 @@
"babel-plugin-transform-vue-jsx": "^3.7.0", "babel-plugin-transform-vue-jsx": "^3.7.0",
"babel-preset-env": "^1.7.0", "babel-preset-env": "^1.7.0",
"babel-preset-stage-2": "^6.24.1", "babel-preset-stage-2": "^6.24.1",
"chai": "^3.5.0", "babel-regenerator-runtime": "^6.5.0",
"chai": "^4.2.0",
"chokidar": "^1.7.0", "chokidar": "^1.7.0",
"copy-webpack-plugin": "^5.0.0", "copy-webpack-plugin": "^5.0.0",
"coveralls": "^2.11.14", "coveralls": "^3.0.3",
"cp-cli": "^1.0.2", "cp-cli": "^1.0.2",
"cross-env": "^3.1.3", "cross-env": "^3.1.3",
"css-loader": "^2.1.0", "css-loader": "^2.1.0",
...@@ -104,20 +105,20 @@ ...@@ -104,20 +105,20 @@
"html-webpack-plugin": "^3.2.0", "html-webpack-plugin": "^3.2.0",
"json-loader": "^0.5.7", "json-loader": "^0.5.7",
"json-templater": "^1.0.4", "json-templater": "^1.0.4",
"karma": "^1.3.0", "karma": "^4.0.1",
"karma-chrome-launcher": "^2.2.0", "karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.1", "karma-coverage": "^1.1.2",
"karma-mocha": "^1.2.0", "karma-mocha": "^1.3.0",
"karma-sinon-chai": "^1.2.4", "karma-sinon-chai": "^2.0.2",
"karma-sourcemap-loader": "^0.3.7", "karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.26", "karma-spec-reporter": "^0.0.32",
"karma-webpack": "^3.0.0", "karma-webpack": "^3.0.5",
"markdown-it": "^8.4.1", "markdown-it": "^8.4.1",
"markdown-it-anchor": "^5.0.2", "markdown-it-anchor": "^5.0.2",
"markdown-it-chain": "^1.3.0", "markdown-it-chain": "^1.3.0",
"markdown-it-container": "^2.0.0", "markdown-it-container": "^2.0.0",
"mini-css-extract-plugin": "^0.4.1", "mini-css-extract-plugin": "^0.4.1",
"mocha": "^3.1.1", "mocha": "^6.0.2",
"node-sass": "^4.11.0", "node-sass": "^4.11.0",
"optimize-css-assets-webpack-plugin": "^5.0.1", "optimize-css-assets-webpack-plugin": "^5.0.1",
"perspective.js": "^1.0.0", "perspective.js": "^1.0.0",
...@@ -126,8 +127,8 @@ ...@@ -126,8 +127,8 @@
"rimraf": "^2.5.4", "rimraf": "^2.5.4",
"sass-loader": "^7.1.0", "sass-loader": "^7.1.0",
"select-version-cli": "^0.0.2", "select-version-cli": "^0.0.2",
"sinon": "^1.17.6", "sinon": "^7.2.7",
"sinon-chai": "^2.8.0", "sinon-chai": "^3.3.0",
"style-loader": "^0.23.1", "style-loader": "^0.23.1",
"transliteration": "^1.1.11", "transliteration": "^1.1.11",
"uglifyjs-webpack-plugin": "^2.1.1", "uglifyjs-webpack-plugin": "^2.1.1",
......
{
"env": {
"mocha": true,
"es6": true
},
"globals": {
"expect": true,
"sinon": true
},
"parserOptions": {
"ecmaVersion": 2017
}
}
// Polyfill fn.bind() for PhantomJS require('babel-regenerator-runtime'); // add regenerator support for async await
/* eslint-disable no-extend-native */
Function.prototype.bind = require('function-bind');
require('packages/theme-chalk/lib/index.css'); require('packages/theme-chalk/lib/index.css');
// require all test files (files that ends with .spec.js) // require all test files (files that ends with .spec.js)
......
...@@ -2,13 +2,7 @@ const webpackConfig = require('../../build/webpack.test'); ...@@ -2,13 +2,7 @@ const webpackConfig = require('../../build/webpack.test');
module.exports = function(config) { module.exports = function(config) {
const configuration = { const configuration = {
browsers: ['Chrome'], browsers: ['ChromeHeadless'],
customLaunchers: {
Chrome_travis_ci: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},
frameworks: ['mocha', 'sinon-chai'], frameworks: ['mocha', 'sinon-chai'],
reporters: ['spec', 'coverage'], reporters: ['spec', 'coverage'],
files: ['./index.js'], files: ['./index.js'],
...@@ -33,9 +27,5 @@ module.exports = function(config) { ...@@ -33,9 +27,5 @@ module.exports = function(config) {
} }
}; };
if (process.env.TRAVIS) {
configuration.browsers = ['Chrome_travis_ci'];
}
config.set(configuration); config.set(configuration);
}; };
This diff is collapsed.
...@@ -100,14 +100,14 @@ describe('Dialog', () => { ...@@ -100,14 +100,14 @@ describe('Dialog', () => {
}; };
} }
}, true); }, true);
const dialog = vm.$children[0]; const dialogEl = vm.$children[0].$el;
expect(dialog.$el.style.display).to.equal('none'); expect(getComputedStyle(dialogEl).display).to.equal('none');
vm.visible = true; vm.visible = true;
setTimeout(() => { setTimeout(() => {
expect(dialog.$el.style.display).to.not.equal('none'); expect(getComputedStyle(dialogEl).display).to.not.equal('none');
vm.visible = false; vm.visible = false;
setTimeout(() => { setTimeout(() => {
expect(dialog.$el.style.display).to.equal('none'); expect(getComputedStyle(dialogEl).display).to.equal('none');
done(); done();
}, 400); }, 400);
}, 50); }, 50);
......
import { createVue, destroyVM } from '../util'; import { createVue, destroyVM, wait, waitImmediate } from '../util';
describe('Input', () => { describe('Input', () => {
let vm; let vm;
...@@ -100,7 +100,7 @@ describe('Input', () => { ...@@ -100,7 +100,7 @@ describe('Input', () => {
}); });
// Github issue #2836 // Github issue #2836
it('resize', done => { it('resize', async() => {
vm = createVue({ vm = createVue({
template: ` template: `
<div> <div>
...@@ -111,17 +111,14 @@ describe('Input', () => { ...@@ -111,17 +111,14 @@ describe('Input', () => {
resize: 'none' resize: 'none'
} }
}, true); }, true);
vm.$nextTick(() => { await waitImmediate();
expect(vm.$el.querySelector('.el-textarea__inner').style.resize).to.be.equal(vm.resize); expect(vm.$el.querySelector('.el-textarea__inner').style.resize).to.be.equal(vm.resize);
vm.resize = 'horizontal'; vm.resize = 'horizontal';
vm.$nextTick(() => { await waitImmediate();
expect(vm.$el.querySelector('.el-textarea__inner').style.resize).to.be.equal(vm.resize); expect(vm.$el.querySelector('.el-textarea__inner').style.resize).to.be.equal(vm.resize);
done();
});
});
}); });
it('autosize', done => { it('autosize', async() => {
vm = createVue({ vm = createVue({
template: ` template: `
<div> <div>
...@@ -154,14 +151,13 @@ describe('Input', () => { ...@@ -154,14 +151,13 @@ describe('Input', () => {
expect(limitlessSizeInput.textareaStyle.height).to.be.equal('201px'); expect(limitlessSizeInput.textareaStyle.height).to.be.equal('201px');
vm.textareaValue = ''; vm.textareaValue = '';
setTimeout(_ => {
expect(limitSizeInput.textareaStyle.height).to.be.equal('75px'); await wait();
expect(limitlessSizeInput.textareaStyle.height).to.be.equal('33px'); expect(limitSizeInput.textareaStyle.height).to.be.equal('75px');
done(); expect(limitlessSizeInput.textareaStyle.height).to.be.equal('33px');
}, 200);
}); });
it('focus', done => { it('focus', async() => {
vm = createVue({ vm = createVue({
template: ` template: `
<el-input ref="input"> <el-input ref="input">
...@@ -174,13 +170,11 @@ describe('Input', () => { ...@@ -174,13 +170,11 @@ describe('Input', () => {
vm.$refs.input.$on('focus', spy); vm.$refs.input.$on('focus', spy);
vm.$refs.input.focus(); vm.$refs.input.focus();
vm.$nextTick(_ => { await waitImmediate();
expect(spy.calledOnce).to.be.true; expect(spy.calledOnce).to.be.true;
done();
});
}); });
it('Input contains Select and append slot', (done) => { it('Input contains Select and append slot', async() => {
vm = createVue({ vm = createVue({
template: ` template: `
<el-input v-model="value" clearable class="input-with-select" ref="input"> <el-input v-model="value" clearable class="input-with-select" ref="input">
...@@ -200,15 +194,14 @@ describe('Input', () => { ...@@ -200,15 +194,14 @@ describe('Input', () => {
} }
}, true); }, true);
vm.$refs.input.hovering = true; vm.$refs.input.hovering = true;
setTimeout(() => {
const suffixEl = document.querySelector('.input-with-select > .el-input__suffix'); await wait();
expect(suffixEl).to.not.be.null; const suffixEl = document.querySelector('.input-with-select > .el-input__suffix');
expect(suffixEl.style.transform).to.not.be.empty; expect(suffixEl).to.not.be.null;
done(); expect(suffixEl.style.transform).to.not.be.empty;
}, 20);
}); });
it('validateEvent', done => { it('validateEvent', async() => {
const spy = sinon.spy(); const spy = sinon.spy();
vm = createVue({ vm = createVue({
template: ` template: `
...@@ -238,10 +231,8 @@ describe('Input', () => { ...@@ -238,10 +231,8 @@ describe('Input', () => {
}, true); }, true);
vm.model.input = '123'; vm.model.input = '123';
vm.$nextTick(() => { await waitImmediate();
expect(spy.called).to.be.false; expect(spy.called).to.be.false;
done();
});
}); });
describe('Input Events', () => { describe('Input Events', () => {
......
...@@ -257,8 +257,8 @@ describe('Loading', () => { ...@@ -257,8 +257,8 @@ describe('Loading', () => {
expect(masks.length).to.equal(0); expect(masks.length).to.equal(0);
done(); done();
}, 350); }, 350);
}, 10); }, 50);
}, 10); }, 50);
}); });
it('lock', () => { it('lock', () => {
......
...@@ -162,7 +162,8 @@ describe('Popover', () => { ...@@ -162,7 +162,8 @@ describe('Popover', () => {
vm.$el.querySelector('button').click(); vm.$el.querySelector('button').click();
expect(compo.popperElm).to.not.exist; expect(compo.popperElm).to.not.exist;
vm.$nextTick(_ => { vm.$nextTick(_ => {
expect(compo).to.have.deep.property('popperElm.style.display').not.equal('none'); const popperElm = compo.popperElm;
expect(getComputedStyle(popperElm).display).to.not.equal('none');
done(); done();
}); });
}); });
...@@ -194,7 +195,8 @@ describe('Popover', () => { ...@@ -194,7 +195,8 @@ describe('Popover', () => {
vm.$el.querySelector('button').click(); vm.$el.querySelector('button').click();
expect(compo.popperElm).to.not.exist; expect(compo.popperElm).to.not.exist;
vm.$nextTick(_ => { vm.$nextTick(_ => {
expect(compo).to.have.deep.property('popperElm.style.display').not.equal('none'); const popperElm = compo.popperElm;
expect(getComputedStyle(popperElm).display).to.not.equal('none');
done(); done();
}); });
}); });
......
import { createTest, createVue, triggerEvent, destroyVM } from '../util'; import { createTest, createVue, triggerEvent, destroyVM, waitImmediate } from '../util';
import Slider from 'packages/slider'; import Slider from 'packages/slider';
describe('Slider', () => { describe('Slider', () => {
...@@ -81,11 +81,11 @@ describe('Slider', () => { ...@@ -81,11 +81,11 @@ describe('Slider', () => {
expect(slider.$refs.tooltip.disabled).to.true; expect(slider.$refs.tooltip.disabled).to.true;
}); });
it('format tooltip', () => { it('format tooltip', async() => {
vm = createVue({ vm = createVue({
template: ` template: `
<div> <div>
<el-slider v-model="value" :format-tooltip="formatTooltip"> <el-slider ref="slider" v-model="value" :format-tooltip="formatTooltip">
</el-slider> </el-slider>
</div> </div>
`, `,
...@@ -101,11 +101,9 @@ describe('Slider', () => { ...@@ -101,11 +101,9 @@ describe('Slider', () => {
} }
} }
}, true); }, true);
const slider = vm.$children[0].$children[0]; const sliderButton = vm.$refs.slider.$children[0];
expect(slider.formatTooltip).to.function; await waitImmediate();
vm.$nextTick(() => { expect(sliderButton.formatValue).to.equal('$0');
expect(slider.formatValue).to.equal('$0');
});
}); });
it('drag', done => { it('drag', done => {
......
import { createVue, destroyVM } from '../util'; import { createVue, destroyVM, waitImmediate } from '../util';
import Vue from 'vue';
describe('Steps', () => { describe('Steps', () => {
let vm; let vm;
...@@ -19,14 +18,14 @@ describe('Steps', () => { ...@@ -19,14 +18,14 @@ describe('Steps', () => {
expect(vm.$el.querySelectorAll('.el-step')).to.length(3); expect(vm.$el.querySelectorAll('.el-step')).to.length(3);
}); });
it('space', done => { it('space', async() => {
vm = createVue(` vm = createVue(`
<el-steps> <el-steps>
<el-step title="step1"></el-step> <el-step title="step1"></el-step>
<el-step title="step2"></el-step> <el-step title="step2"></el-step>
<el-step title="step3"></el-step> <el-step title="step3"></el-step>
</el-steps> </el-steps>
`); `, true);
const vm2 = createVue(` const vm2 = createVue(`
<el-steps :space="100"> <el-steps :space="100">
...@@ -35,13 +34,13 @@ describe('Steps', () => { ...@@ -35,13 +34,13 @@ describe('Steps', () => {
<el-step title="step3"></el-step> <el-step title="step3"></el-step>
<el-step title="step4"></el-step> <el-step title="step4"></el-step>
</el-steps> </el-steps>
`); `, true);
Vue.nextTick(_ => { await waitImmediate();
expect(vm.$el.querySelector('.el-step')).have.deep.property('style.webkitFlexBasis').equal('50%'); const stepElm = vm.$el.querySelector('.el-step');
expect(vm2.$el.querySelector('.el-step')).have.deep.property('style.webkitFlexBasis').equal('100px'); const stepElm2 = vm2.$el.querySelector('.el-step');
done(); expect(getComputedStyle(stepElm).flexBasis).to.equal('50%');
}); expect(getComputedStyle(stepElm2).flexBasis).to.equal('100px');
}); });
it('processStatus', done => { it('processStatus', done => {
...@@ -131,18 +130,17 @@ describe('Steps', () => { ...@@ -131,18 +130,17 @@ describe('Steps', () => {
expect(vm.$el.querySelector('.is-vertical')).to.exist; expect(vm.$el.querySelector('.is-vertical')).to.exist;
}); });
it('vertical:height', done => { it('vertical:height', async() => {
vm = createVue(` vm = createVue(`
<el-steps direction="vertical" :space="200"> <el-steps direction="vertical" :space="200">
<el-step title="aaa"></el-step> <el-step title="aaa"></el-step>
<el-step title="bbb"></el-step> <el-step title="bbb"></el-step>
</el-steps> </el-steps>
`); `, true);
vm.$nextTick(_ => { await waitImmediate();
expect(vm.$el.querySelector('.el-step')).have.deep.property('style.webkitFlexBasis').equal('200px'); const stepElm = vm.$el.querySelector('.el-step');
done(); expect(getComputedStyle(stepElm).flexBasis).to.equal('200px');
});
}); });
it('step:status=error', done => { it('step:status=error', done => {
......
import { createVue, destroyVM } from '../util'; import { createVue, destroyVM, waitImmediate } from '../util';
const DELAY = 10; const DELAY = 10;
...@@ -353,12 +353,10 @@ describe('Tree', () => { ...@@ -353,12 +353,10 @@ describe('Tree', () => {
}); });
it('check', done => { it('check', done => {
const spy = sinon.spy();
vm = getTreeVm(':props="defaultProps" show-checkbox @check="handleCheck"', { vm = getTreeVm(':props="defaultProps" show-checkbox @check="handleCheck"', {
methods: { methods: {
handleCheck(data, args) { handleCheck: spy
this.data = data;
this.args = args;
}
} }
}); });
const secondNode = document.querySelectorAll('.el-tree-node__content')[1]; const secondNode = document.querySelectorAll('.el-tree-node__content')[1];
...@@ -366,8 +364,10 @@ describe('Tree', () => { ...@@ -366,8 +364,10 @@ describe('Tree', () => {
expect(nodeCheckbox).to.be.exist; expect(nodeCheckbox).to.be.exist;
nodeCheckbox.click(); nodeCheckbox.click();
setTimeout(() => { setTimeout(() => {
expect(vm.args.checkedNodes.length).to.equal(3); expect(spy.calledOnce).to.be.true;
expect(vm.data.id).to.equal(2); const [data, args] = spy.args[0];
expect(data.id).to.equal(2);
expect(args.checkedNodes.length).to.equal(3);
done(); done();
}, 10); }, 10);
}); });
...@@ -389,31 +389,31 @@ describe('Tree', () => { ...@@ -389,31 +389,31 @@ describe('Tree', () => {
}, 10); }, 10);
}); });
it('setCheckedKeys', () => { it('setCheckedKeys', async() => {
vm = getTreeVm(':props="defaultProps" show-checkbox node-key="id"'); vm = getTreeVm(':props="defaultProps" show-checkbox node-key="id"');
const tree = vm.$children[0]; const tree = vm.$children[0];
tree.setCheckedKeys([111]); tree.setCheckedKeys([111]);
await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(3); expect(tree.getCheckedNodes().length).to.equal(3);
expect(tree.getCheckedKeys().length).to.equal(3); expect(tree.getCheckedKeys().length).to.equal(3);
tree.setCheckedKeys([1]); tree.setCheckedKeys([1]);
setTimeout(function() { await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(3); expect(tree.getCheckedNodes().length).to.equal(3);
expect(tree.getCheckedKeys().length).to.equal(3); expect(tree.getCheckedKeys().length).to.equal(3);
}, 0);
tree.setCheckedKeys([2]); tree.setCheckedKeys([2]);
setTimeout(function() { await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(3); expect(tree.getCheckedNodes().length).to.equal(3);
expect(tree.getCheckedKeys().length).to.equal(3); expect(tree.getCheckedKeys().length).to.equal(3);
}, 0);
tree.setCheckedKeys([21]); tree.setCheckedKeys([21]);
await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(1); expect(tree.getCheckedNodes().length).to.equal(1);
expect(tree.getCheckedKeys().length).to.equal(1); expect(tree.getCheckedKeys().length).to.equal(1);
}); });
it('setCheckedKeys with checkStrictly', () => { it('setCheckedKeys with checkStrictly', async() => {
vm = getTreeVm(':props="defaultProps" checkStrictly show-checkbox node-key="id"'); vm = getTreeVm(':props="defaultProps" checkStrictly show-checkbox node-key="id"');
const tree = vm.$children[0]; const tree = vm.$children[0];
tree.setCheckedKeys([111]); tree.setCheckedKeys([111]);
...@@ -421,18 +421,17 @@ describe('Tree', () => { ...@@ -421,18 +421,17 @@ describe('Tree', () => {
expect(tree.getCheckedKeys().length).to.equal(1); expect(tree.getCheckedKeys().length).to.equal(1);
tree.setCheckedKeys([1]); tree.setCheckedKeys([1]);
setTimeout(function() { await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(1); expect(tree.getCheckedNodes().length).to.equal(1);
expect(tree.getCheckedKeys().length).to.equal(1); expect(tree.getCheckedKeys().length).to.equal(1);
}, 0);
tree.setCheckedKeys([2]); tree.setCheckedKeys([2]);
setTimeout(function() { await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(1); expect(tree.getCheckedNodes().length).to.equal(1);
expect(tree.getCheckedKeys().length).to.equal(1); expect(tree.getCheckedKeys().length).to.equal(1);
}, 0);
tree.setCheckedKeys([21, 22]); tree.setCheckedKeys([21, 22]);
await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(2); expect(tree.getCheckedNodes().length).to.equal(2);
expect(tree.getCheckedKeys().length).to.equal(2); expect(tree.getCheckedKeys().length).to.equal(2);
}); });
...@@ -449,24 +448,22 @@ describe('Tree', () => { ...@@ -449,24 +448,22 @@ describe('Tree', () => {
expect(tree.getCheckedKeys().length).to.equal(0); expect(tree.getCheckedKeys().length).to.equal(0);
}); });
it('setCheckedKeys with leafOnly=false', () => { it('setCheckedKeys with leafOnly=false', async() => {
vm = getTreeVm(':props="defaultProps" show-checkbox node-key="id"'); vm = getTreeVm(':props="defaultProps" show-checkbox node-key="id"');
const tree = vm.$children[0]; const tree = vm.$children[0];
tree.setCheckedKeys([1, 11, 111, 2], false); tree.setCheckedKeys([1, 11, 111, 2], false);
setTimeout(function() { await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(6); expect(tree.getCheckedNodes().length).to.equal(6);
expect(tree.getCheckedKeys().length).to.equal(6); expect(tree.getCheckedKeys().length).to.equal(6);
}, 0);
}); });
it('setCheckedKeys with leafOnly=true', () => { it('setCheckedKeys with leafOnly=true', async() => {
vm = getTreeVm(':props="defaultProps" show-checkbox node-key="id"'); vm = getTreeVm(':props="defaultProps" show-checkbox node-key="id"');
const tree = vm.$children[0]; const tree = vm.$children[0];
tree.setCheckedKeys([2], true); tree.setCheckedKeys([2], true);
setTimeout(function() { await waitImmediate();
expect(tree.getCheckedNodes().length).to.equal(2); expect(tree.getCheckedNodes().length).to.equal(2);
expect(tree.getCheckedKeys().length).to.equal(2); expect(tree.getCheckedKeys().length).to.equal(2);
}, 0);
}); });
it('setCurrentKey', (done) => { it('setCurrentKey', (done) => {
......
...@@ -4,6 +4,7 @@ const noop = () => { ...@@ -4,6 +4,7 @@ const noop = () => {
}; };
const option = { const option = {
onSuccess: noop, onSuccess: noop,
onProgress: noop,
data: { a: 'abc', b: 'bcd' }, data: { a: 'abc', b: 'bcd' },
filename: 'file.png', filename: 'file.png',
file: 'foo', file: 'foo',
......
...@@ -139,7 +139,7 @@ describe('Utils:VuePopper', () => { ...@@ -139,7 +139,7 @@ describe('Utils:VuePopper', () => {
const vm = createTest(Popper, { const vm = createTest(Popper, {
visibleArrow: true visibleArrow: true
}); });
expect(vm.appended).to.empty; expect(vm.appended).to.be.undefined;
vm.createPopper(); vm.createPopper();
expect(vm.appended).to.true; expect(vm.appended).to.true;
vm.appendArrow(); vm.appendArrow();
...@@ -155,7 +155,7 @@ describe('Utils:VuePopper', () => { ...@@ -155,7 +155,7 @@ describe('Utils:VuePopper', () => {
visibleArrow: true, visibleArrow: true,
popper popper
}); });
expect(vm.appended).to.empty; expect(vm.appended).to.be.undefined;
vm.createPopper(); vm.createPopper();
expect(vm.popperJS._popper.querySelector('[x-arrow][_v-110]')).to.exist; expect(vm.popperJS._popper.querySelector('[x-arrow][_v-110]')).to.exist;
}); });
......
...@@ -106,3 +106,16 @@ export const triggerKeyDown = function(el, keyCode) { ...@@ -106,3 +106,16 @@ export const triggerKeyDown = function(el, keyCode) {
evt.keyCode = keyCode; evt.keyCode = keyCode;
el.dispatchEvent(evt); el.dispatchEvent(evt);
}; };
/**
* 等待 ms 毫秒,返回 Promise
* @param {Number} ms
*/
export const wait = function(ms = 50) {
return new Promise(resolve => setTimeout(() => resolve(), ms));
};
/**
* 等待一个 Tick,代替 Vue.nextTick,返回 Promise
*/
export const waitImmediate = () => wait(0);
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment