Browse Source

get tests passing on all suacelab browsers

dev
Evan You 9 years ago
parent
commit
000433c878
  1. 6
      build/karma.sauce.config.js
  2. 13
      package.json
  3. 2
      src/core/util/env.js
  4. 7
      src/platforms/web/util/element.js
  5. 18
      test/unit/features/options/components.spec.js
  6. 2
      test/unit/features/transition/transition.spec.js

6
build/karma.sauce.config.js

@ -43,6 +43,11 @@ var batches = [
browserName: 'internet explorer',
platform: 'Windows 8.1',
version: '11'
},
sl_edge: {
base: 'SauceLabs',
browserName: 'MicrosoftEdge',
platform: 'Windows 10'
}
},
// mobile
@ -66,6 +71,7 @@ module.exports = function (config) {
var batch = batches[process.argv[4] || 0]
config.set(Object.assign(base, {
singleRun: true,
browsers: Object.keys(batch),
customLaunchers: batch,
reporters: ['progress', 'saucelabs'],

13
package.json

@ -14,16 +14,18 @@
"dev:test": "karma start build/karma.dev.config.js",
"dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js",
"dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js",
"test": "npm run lint && flow check && npm run test:cover && npm run test:unit && npm run test:e2e && npm run test:ssr",
"ci": "npm run lint && flow check && npm run test:cover && npm run test:ssr",
"build": "NODE_ENV=production node build/build.js",
"lint": "eslint src build test",
"flow": "flow check",
"build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer",
"ci": "npm run lint && flow check && npm run test:cover && npm run test:ssr",
"test": "npm run lint && flow check && npm run test:cover && npm run test:unit && npm run test:e2e && npm run test:ssr",
"test:unit": "NODE_ENV=development karma start build/karma.unit.config.js",
"test:cover": "NODE_ENV=development karma start build/karma.cover.config.js",
"test:e2e": "npm run build -- vue.js && node test/e2e/runner.js",
"build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer",
"test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json",
"test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2",
"lint": "eslint src build test",
"flow": "flow check",
"sauce": "NODE_ENV=development karma start build/karma.sauce.config.js",
"bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js",
"release": "bash build/release.sh"
},
@ -68,6 +70,7 @@
"karma-jasmine": "^1.0.2",
"karma-phantomjs-launcher": "^1.0.0",
"karma-safari-launcher": "^1.0.0",
"karma-sauce-launcher": "^1.0.0",
"karma-sourcemap-loader": "^0.3.0",
"karma-spec-reporter": "^0.0.26",
"karma-webpack": "^1.7.0",

2
src/core/util/env.js

@ -13,7 +13,7 @@ export const inBrowser =
export const devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__
// UA sniffing for working around browser-specific quirks
const UA = inBrowser && window.navigator.userAgent.toLowerCase()
export const UA = inBrowser && window.navigator.userAgent.toLowerCase()
const isIos = UA && /(iphone|ipad|ipod|ios)/i.test(UA)
const iosVersionMatch = UA && isIos && UA.match(/os ([\d_]+)/)
const iosVersion = iosVersionMatch && iosVersionMatch[1].split('_')

7
src/platforms/web/util/element.js

@ -83,11 +83,6 @@ export function isUnknownElement (tag: string): boolean {
el.constructor === window.HTMLElement
))
} else {
return (unknownElementCache[tag] = (
/HTMLUnknownElement/.test(el.toString()) &&
// Chrome returns unknown for several HTML5 elements.
// https://code.google.com/p/chromium/issues/detail?id=540526
!/^(data|time|rtc|rb)$/.test(tag)
))
return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
}
}

18
test/unit/features/options/components.spec.js

@ -1,4 +1,5 @@
import Vue from 'vue'
import { UA } from 'core/util/env'
describe('Options components', () => {
it('should accept plain object', () => {
@ -74,10 +75,15 @@ describe('Options components', () => {
expect('Do not use built-in or reserved HTML elements as component').toHaveBeenWarned()
})
it('warn non-existent', () => {
new Vue({
template: '<test></test>'
}).$mount()
expect('Unknown custom element: <test>').toHaveBeenWarned()
})
// the HTMLUnknownElement check doesn't work in Android 4.2
// but since it doesn't support custom elements nor will any dev use it
// as their primary debugging browser, it doesn't really matter.
if (!(UA && /android 4\.2/.test(UA))) {
it('warn non-existent', () => {
new Vue({
template: '<test></test>'
}).$mount()
expect('Unknown custom element: <test>').toHaveBeenWarned()
})
}
})

2
test/unit/features/transition/transition.spec.js

@ -389,7 +389,7 @@ if (!isIE9) {
expect(vm.$el.children[0].className).toBe('test test-leave')
}).thenWaitFor(nextFrame).then(() => {
expect(vm.$el.children[0].className).toBe('test test-leave-active')
}).thenWaitFor(duration / 2).then(() => {
}).thenWaitFor(10).then(() => {
vm.ok = true
}).then(() => {
expect(spy).toHaveBeenCalled()

Loading…
Cancel
Save