jest: Fail on Vue and other warnings

If console.warn/console.error are invoked, fail the test. This is useful
for catching Vue warnings before they're merged.

Fix various warnings triggered by tests.

Bug: T323252
Change-Id: I1c0064f8dd1fcd050049df2811eafbec63f09717
这个提交包含在:
Kosta Harlan 2022-11-23 13:16:29 +01:00
父节点 6da06f52a9
当前提交 8949ab01ac
找不到此签名对应的密钥
GPG 密钥 ID: BC3D8915606A5ED9
共有 12 个文件被更改,包括 186 次插入31 次删除

查看文件

@ -39,5 +39,8 @@ module.exports = {
],
setupFiles: [
'./jest.setup.js'
],
setupFilesAfterEnv: [
'./jest.setupAfterEnv.js'
]
};

5
jest.setupAfterEnv.js 普通文件
查看文件

@ -0,0 +1,5 @@
'use strict';
const failOnConsole = require( 'jest-fail-on-console' );
failOnConsole();

查看文件

@ -108,7 +108,8 @@ describe( 'NewImpactVue', () => {
global: {
provide: {
RENDER_MODE: 'desktop',
RELEVANT_USER_USERNAME: 'Alice'
RELEVANT_USER_USERNAME: 'Alice',
$log: jest.fn()
},
mocks: {
$filters: {

查看文件

@ -33,7 +33,7 @@ describe( 'NoEditsDisplay', () => {
'overlay-summary'
];
for ( const mode of modes ) {
it( `displays appropiate text when disabled (${mode})`, () => {
it( `displays appropriate text when disabled (${mode})`, () => {
const wrapper = renderComponent( {
userName: 'Alice',
isDisabled: true
@ -41,7 +41,7 @@ describe( 'NoEditsDisplay', () => {
expect( wrapper.element ).toMatchSnapshot();
} );
it( `displays appropiate text when activated (${mode})`, () => {
it( `displays appropriate text when activated (${mode})`, () => {
const wrapper = renderComponent( {
userName: 'Alice',
isActivated: true

查看文件

@ -101,10 +101,10 @@ module.exports = exports = {
},
computed: {
subtextFontWeight() {
return this.renderMode !== 'overlay-summary' && 'bold';
return this.renderMode !== 'overlay-summary' ? 'bold' : null;
},
footerFontSize() {
return this.renderMode !== 'desktop' && 'sm';
return this.renderMode !== 'desktop' ? 'sm' : null;
}
}
};

查看文件

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`NoEditsDisplay displays appropiate text when activated (desktop) 1`] = `
exports[`NoEditsDisplay displays appropriate text when activated (desktop) 1`] = `
<div
class="ext-growthExperiments-NoEditsDisplay--desktop"
>
@ -40,7 +40,7 @@ exports[`NoEditsDisplay displays appropiate text when activated (desktop) 1`] =
</div>
`;
exports[`NoEditsDisplay displays appropiate text when activated (overlay) 1`] = `
exports[`NoEditsDisplay displays appropriate text when activated (overlay) 1`] = `
<div
class="ext-growthExperiments-NoEditsDisplay--overlay"
>
@ -89,7 +89,7 @@ exports[`NoEditsDisplay displays appropiate text when activated (overlay) 1`] =
</div>
`;
exports[`NoEditsDisplay displays appropiate text when activated (overlay-summary) 1`] = `
exports[`NoEditsDisplay displays appropriate text when activated (overlay-summary) 1`] = `
<div
class="ext-growthExperiments-NoEditsDisplay--overlay-summary"
>
@ -129,7 +129,7 @@ exports[`NoEditsDisplay displays appropiate text when activated (overlay-summary
</div>
`;
exports[`NoEditsDisplay displays appropiate text when disabled (desktop) 1`] = `
exports[`NoEditsDisplay displays appropriate text when disabled (desktop) 1`] = `
<div
class="ext-growthExperiments-NoEditsDisplay--desktop"
>
@ -171,7 +171,7 @@ exports[`NoEditsDisplay displays appropiate text when disabled (desktop) 1`] = `
</div>
`;
exports[`NoEditsDisplay displays appropiate text when disabled (overlay) 1`] = `
exports[`NoEditsDisplay displays appropriate text when disabled (overlay) 1`] = `
<div
class="ext-growthExperiments-NoEditsDisplay--overlay"
>
@ -213,7 +213,7 @@ exports[`NoEditsDisplay displays appropiate text when disabled (overlay) 1`] = `
</div>
`;
exports[`NoEditsDisplay displays appropiate text when disabled (overlay-summary) 1`] = `
exports[`NoEditsDisplay displays appropriate text when disabled (overlay-summary) 1`] = `
<div
class="ext-growthExperiments-NoEditsDisplay--overlay-summary"
>

查看文件

@ -83,7 +83,8 @@
<cdx-button
class="ext-growthExperiments-utils__pull-right"
form="mentee-filters-form"
type="submit">
type="primary"
>
{{
$i18n( 'growthexperiments-mentor-dashboard-mentee-overview-add-filter-submit' ).text()
}}

查看文件

@ -1,4 +1,6 @@
jest.mock( '../icons.json', () => ( {} ), { virtual: true } );
jest.mock( '../icons.json', () => ( {
cdxIconError: ''
} ), { virtual: true } );
const { shallowMount } = require( '@vue/test-utils' );
const Vuex = require( 'vuex' );
const MenteeOverview = require( './MenteeOverview.vue' );

查看文件

@ -16,6 +16,7 @@
<script>
const { CdxIcon } = require( '@wikimedia/codex' );
const { cdxIconError } = require( '../icons.json' );
// @vue/component
module.exports = exports = {
@ -27,7 +28,7 @@ module.exports = exports = {
description: { type: String, default: null },
iconLabel: { type: String, required: true },
text: { type: String, required: true },
icon: { type: String, required: true }
icon: { type: String, required: true, default: cdxIconError }
}
};
</script>

查看文件

@ -163,7 +163,7 @@ exports[`MenteeFiltersForm it should localise numbers in the recent edits 1`] =
class="ext-growthExperiments-MenteeFiltersForm__form-group ext-growthExperiments-MenteeFiltersForm__form-actions"
>
<button
class="cdx-button cdx-button--action-default cdx-button--type-submit cdx-button--framed ext-growthExperiments-utils__pull-right"
class="cdx-button cdx-button--action-default cdx-button--type-primary cdx-button--framed ext-growthExperiments-utils__pull-right"
form="mentee-filters-form"
>

173
package-lock.json 自动生成的
查看文件

@ -35,6 +35,7 @@
"grunt-eslint": "24.0.0",
"grunt-stylelint": "0.18.0",
"jest": "27.4.7",
"jest-fail-on-console": "^3.0.2",
"jquery": "3.6.1",
"moment": "^2.29.4",
"postcss-html": "1.4.1",
@ -11311,6 +11312,76 @@
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
"node_modules/jest-fail-on-console": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jest-fail-on-console/-/jest-fail-on-console-3.0.2.tgz",
"integrity": "sha512-8vpH03d9n41jKCF/rcQz/nf0ksK2hlnOXTY5VUMqliPHPfT9F7L9CYOyhFNSQ+o6Aszsuja0GAXt1jz6sfDM8w==",
"dev": true,
"dependencies": {
"chalk": "^4.1.0"
}
},
"node_modules/jest-fail-on-console/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/jest-fail-on-console/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/jest-fail-on-console/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/jest-fail-on-console/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/jest-fail-on-console/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/jest-get-type": {
"version": "28.0.2",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz",
@ -20141,7 +20212,8 @@
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz",
"integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==",
"dev": true,
"peer": true
"peer": true,
"requires": {}
},
"@es-joy/jsdoccomment": {
"version": "0.20.1",
@ -21487,7 +21559,8 @@
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compat/-/compat-3.2.37.tgz",
"integrity": "sha512-MIYkFAz3Fur1mtZBqrNMYTymlohCQ0ol6vtNb58cqExLSCt63xZaXyiZZYPvS6WaMXfbNBDPXMvU9tO922eFCA==",
"dev": true
"dev": true,
"requires": {}
},
"@vue/compiler-core": {
"version": "3.2.37",
@ -21624,7 +21697,8 @@
"version": "2.0.0-rc.21",
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.0.0-rc.21.tgz",
"integrity": "sha512-wIJR4e/jISBKVKfiod3DV32BlDsoD744WVCuCaGtaSKvhvTL9gI5vl2AYSy00V51YaM8dCOFi3zcpCON8G1WqA==",
"dev": true
"dev": true,
"requires": {}
},
"@vue/vue3-jest": {
"version": "27.0.0-alpha.4",
@ -22131,7 +22205,8 @@
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@wikimedia/codex/-/codex-0.2.2.tgz",
"integrity": "sha512-Mb7q6JtbmoXfztZVVTbkvlIWxEGQ2X3N5RUjinBsVjq3gmV8soiwGzeFOuC5lbC8lpFtsCvkN+fp4m1OFaF8wQ==",
"dev": true
"dev": true,
"requires": {}
},
"abab": {
"version": "2.0.6",
@ -22173,7 +22248,8 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true
"dev": true,
"requires": {}
},
"acorn-walk": {
"version": "7.2.0",
@ -25012,7 +25088,8 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.7.0.tgz",
"integrity": "sha512-Aeg7dA6GTH1AcWLlBtWNzOU9efK5KpNi7b0EhBO0o0M+awyzguUUo8gF6hXGjQ9n5h8/uRtYv9zOqQkeC5CG0w==",
"dev": true
"dev": true,
"requires": {}
},
"eslint-plugin-node": {
"version": "11.1.0",
@ -27555,6 +27632,60 @@
"jest-util": "^27.5.1"
}
},
"jest-fail-on-console": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jest-fail-on-console/-/jest-fail-on-console-3.0.2.tgz",
"integrity": "sha512-8vpH03d9n41jKCF/rcQz/nf0ksK2hlnOXTY5VUMqliPHPfT9F7L9CYOyhFNSQ+o6Aszsuja0GAXt1jz6sfDM8w==",
"dev": true,
"requires": {
"chalk": "^4.1.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"jest-get-type": {
"version": "28.0.2",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz",
@ -27955,7 +28086,8 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
"integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
"dev": true
"dev": true,
"requires": {}
},
"jest-regex-util": {
"version": "27.5.1",
@ -30580,7 +30712,8 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-6.0.0.tgz",
"integrity": "sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==",
"dev": true
"dev": true,
"requires": {}
},
"postcss-media-query-parser": {
"version": "0.2.3",
@ -30598,7 +30731,8 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
"integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
"dev": true
"dev": true,
"requires": {}
},
"postcss-selector-parser": {
"version": "6.0.10",
@ -30781,7 +30915,8 @@
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
"integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
"dev": true
"dev": true,
"requires": {}
}
}
},
@ -31838,7 +31973,8 @@
"dev": true
},
"stylelint": {
"version": "https://registry.npmjs.org/stylelint/-/stylelint-14.9.1.tgz",
"version": "14.9.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.9.1.tgz",
"integrity": "sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA==",
"dev": true,
"peer": true,
@ -32021,13 +32157,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-1.0.0.tgz",
"integrity": "sha512-rKQUUWDpaYC7ybsS6tLxddjn6DxhjSIXybElSmcTyVQj3ExhmU3q+l41ktrlwHRyY0M5SkTkZiwngvYPYmsgSQ==",
"dev": true
"dev": true,
"requires": {}
},
"stylelint-config-recommended": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz",
"integrity": "sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ==",
"dev": true
"dev": true,
"requires": {}
},
"stylelint-config-recommended-vue": {
"version": "1.4.0",
@ -32218,7 +32356,8 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz",
"integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==",
"dev": true
"dev": true,
"requires": {}
},
"trim-newlines": {
"version": "3.0.1",
@ -32678,7 +32817,8 @@
}
},
"typescript": {
"version": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true,
"peer": true
@ -33243,7 +33383,8 @@
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz",
"integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==",
"dev": true
"dev": true,
"requires": {}
},
"xdg-basedir": {
"version": "4.0.0",

查看文件

@ -42,6 +42,7 @@
"grunt-eslint": "24.0.0",
"grunt-stylelint": "0.18.0",
"jest": "27.4.7",
"jest-fail-on-console": "^3.0.2",
"jquery": "3.6.1",
"moment": "^2.29.4",
"postcss-html": "1.4.1",