MM-28653 Detox/E2E: Add jest-junit, jest-html-reporters and pathbuilders for test report/artifacts (#4888)
* add jest-junit, jest-html-reporters and pathbuilders for test report/artifacts * change optional chaining implementation
This commit is contained in:
parent
52f6f1dce8
commit
6e2549de7f
7 changed files with 139 additions and 12 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -92,6 +92,7 @@ coverage
|
|||
# E2E testing
|
||||
mattermost-license.txt
|
||||
*.mattermost-license
|
||||
detox/artifacts
|
||||
|
||||
# Bundle artifact
|
||||
*.jsbundle
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"testRunner": "jest",
|
||||
"runnerConfig": "e2e/config.json",
|
||||
"runnerConfig": "e2e/config.js",
|
||||
"configurations": {
|
||||
"ios.sim.debug": {
|
||||
"binaryPath": "../ios/Build/Products/Debug-iphonesimulator/Mattermost.app",
|
||||
|
|
@ -34,6 +34,9 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"artifacts": {
|
||||
"pathBuilder": "./e2e/path_builder.js"
|
||||
},
|
||||
"behavior": {
|
||||
"init": {
|
||||
"launchApp": false
|
||||
|
|
|
|||
28
detox/e2e/config.js
Normal file
28
detox/e2e/config.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
const platform = process.env.IOS ? 'ios' : 'android';
|
||||
|
||||
module.exports = {
|
||||
setupFilesAfterEnv: ['./init.js'],
|
||||
testEnvironment: './environment',
|
||||
testRunner: 'jest-circus/runner',
|
||||
testTimeout: 120000,
|
||||
testRegex: '\\.e2e\\.js$',
|
||||
reporters: [
|
||||
'../node_modules/detox/runners/jest/streamlineReporter',
|
||||
['jest-junit', {
|
||||
suiteName: 'Mobile App E2E with Detox and Jest',
|
||||
outputDirectory: './artifacts',
|
||||
outputName: `${platform}-junit.xml`,
|
||||
uniqueOutputName: false,
|
||||
}],
|
||||
['jest-html-reporters', {
|
||||
pageTitle: 'Mobile App E2E with Detox and Jest',
|
||||
publicPath: './artifacts',
|
||||
filename: `${platform}-report.html`,
|
||||
expand: false,
|
||||
}],
|
||||
],
|
||||
verbose: true,
|
||||
};
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"setupFilesAfterEnv" : ["./init.js"],
|
||||
"testEnvironment": "./environment",
|
||||
"testRunner": "jest-circus/runner",
|
||||
"testTimeout": 120000,
|
||||
"testRegex": "\\.e2e\\.js$",
|
||||
"reporters": ["detox/runners/jest/streamlineReporter"],
|
||||
"verbose": true
|
||||
}
|
||||
24
detox/e2e/path_builder.js
Normal file
24
detox/e2e/path_builder.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
const path = require('path');
|
||||
const sanitizeFilename = require('sanitize-filename');
|
||||
|
||||
const SANITIZE_OPTIONS = {replacement: '_'};
|
||||
const sanitize = (filename) => sanitizeFilename(filename, SANITIZE_OPTIONS);
|
||||
|
||||
class CustomPathBuilder {
|
||||
constructor({rootDir}) {
|
||||
this.rootDir = rootDir;
|
||||
}
|
||||
|
||||
buildPathForTestArtifact(artifactName, testSummary = null) {
|
||||
const fullName = (testSummary && testSummary.fullName) || '';
|
||||
const segments = [this.rootDir, sanitize(fullName), sanitize(artifactName)];
|
||||
return path.join(...segments.filter(Boolean));
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ({rootDir}) => {
|
||||
return new CustomPathBuilder({rootDir});
|
||||
};
|
||||
77
detox/package-lock.json
generated
77
detox/package-lock.json
generated
|
|
@ -1868,6 +1868,12 @@
|
|||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
|
||||
"dev": true
|
||||
},
|
||||
"at-least-node": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
|
||||
"dev": true
|
||||
},
|
||||
"atob": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
||||
|
|
@ -4261,6 +4267,45 @@
|
|||
"walker": "^1.0.7"
|
||||
}
|
||||
},
|
||||
"jest-html-reporters": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-2.1.0.tgz",
|
||||
"integrity": "sha512-1RAyEtvfpHHv4pbrl4Y7Vm777ucHkTH2G0Rvpo9M9/ew2TwPqhvEi37IoTLf+gdelDxaS0QqyH89+9lO6omAcA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs-extra": "^9.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
|
||||
"integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"at-least-node": "^1.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
|
||||
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6",
|
||||
"universalify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
|
||||
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jest-jasmine2": {
|
||||
"version": "26.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz",
|
||||
|
|
@ -4339,6 +4384,32 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"jest-junit": {
|
||||
"version": "12.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-12.0.0.tgz",
|
||||
"integrity": "sha512-+8K35LlboWiPuCnXSyiid7rFdxNlpCWWM20WEYe6IZH6psfUWKZmSpSRQ5tk0C0cBeDsvsnIzcef5mYhyJsbug==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mkdirp": "^1.0.4",
|
||||
"strip-ansi": "^5.2.0",
|
||||
"uuid": "^3.3.3",
|
||||
"xml": "^1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||
"dev": true
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jest-leak-detector": {
|
||||
"version": "26.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz",
|
||||
|
|
@ -7492,6 +7563,12 @@
|
|||
"ultron": "~1.1.0"
|
||||
}
|
||||
},
|
||||
"xml": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
|
||||
"integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
|
||||
"dev": true
|
||||
},
|
||||
"xml-name-validator": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
"jest": "26.4.2",
|
||||
"jest-circus": "26.4.2",
|
||||
"jest-cli": "26.4.2",
|
||||
"jest-html-reporters": "2.1.0",
|
||||
"jest-junit": "12.0.0",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"uuid": "8.3.0"
|
||||
},
|
||||
"scripts": {
|
||||
|
|
@ -23,10 +26,10 @@
|
|||
"e2e:android-build": "detox build -c android.emu.debug",
|
||||
"e2e:android-test": "detox test -c android.emu.debug",
|
||||
"e2e:android-build-release": "detox build -c android.emu.release",
|
||||
"e2e:android-test-release": "detox test -c android.emu.release",
|
||||
"e2e:android-test-release": "detox test -c android.emu.release --record-logs failing --take-screenshots failing",
|
||||
"e2e:ios-test": "IOS=true detox test -c ios.sim.debug",
|
||||
"e2e:ios-build-release": "detox build -c ios.sim.release",
|
||||
"e2e:ios-test-release": "IOS=true detox test -c ios.sim.release"
|
||||
"e2e:ios-test-release": "IOS=true detox test -c ios.sim.release --record-logs failing --take-screenshots failing"
|
||||
},
|
||||
"jest": {
|
||||
"transform": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue