Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
e9bcd34
prepares jenkins
MadameSheema Jan 16, 2020
d878e9a
adds empty kibana data
MadameSheema Jan 16, 2020
c4b4932
adds auditbeat data
MadameSheema Jan 16, 2020
76010fb
adds missing jenkins file
MadameSheema Jan 16, 2020
86c68b3
changes
MadameSheema Jan 19, 2020
53477ec
adds new data
MadameSheema Jan 20, 2020
d567759
adds timeout to visit
MadameSheema Jan 21, 2020
e4e89bc
increase timeout for visit page
MadameSheema Jan 21, 2020
9af03df
fixes web load problem in the CI
MadameSheema Jan 21, 2020
59b2ae5
fixes detached element issue
MadameSheema Jan 22, 2020
7250aff
fixes build failure
MadameSheema Jan 23, 2020
52fe009
fixes failing tests
MadameSheema Jan 23, 2020
e474f03
fixes failing scenarios
MadameSheema Jan 27, 2020
7e99062
fixes configuration
MadameSheema Jan 28, 2020
5474b3e
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 10, 2020
d96cad4
fixes login merge issue
MadameSheema Feb 10, 2020
0cbc62e
fixes 'conditional links' merge issues
MadameSheema Feb 10, 2020
0428b26
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 11, 2020
f347eae
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 11, 2020
1cae411
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 12, 2020
05f134d
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 13, 2020
fc6dc73
adds AndrewG cypress loop script
MadameSheema Feb 13, 2020
fdd3f3f
fixes url failing test
MadameSheema Feb 13, 2020
4d5b9d0
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 14, 2020
14f83bc
fixes 'url state' flaky test
MadameSheema Feb 14, 2020
0f03c89
remove flakyness from browser fields and events viewer tests
MadameSheema Feb 14, 2020
c3199a7
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 18, 2020
1fe339a
fixes 'field browser' flaky test
MadameSheema Feb 18, 2020
88a3355
adds reporting
MadameSheema Feb 18, 2020
66f8e55
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 18, 2020
1a62b1b
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 19, 2020
80abe9d
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 19, 2020
440d922
fixes merge issues
MadameSheema Feb 19, 2020
87330b0
Merge branch 'cypress-siem-jenkins-new-data' of github.com:MadameShee…
MadameSheema Feb 19, 2020
ff4cb1c
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 19, 2020
769eceb
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 20, 2020
50133f3
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 21, 2020
d77973e
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 21, 2020
9f6b741
fixes merge issue
MadameSheema Feb 21, 2020
31ee2ed
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 21, 2020
659715b
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 23, 2020
9952789
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 23, 2020
67e34f8
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 23, 2020
ce6a9db
fixes url flacky test
MadameSheema Feb 24, 2020
317bca4
adds 'cypress:run-as-ci' command
MadameSheema Feb 24, 2020
a18850d
fixes flaky test
MadameSheema Feb 24, 2020
51ac618
fixes drag and drop flaky scenario
MadameSheema Feb 24, 2020
b05c35b
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 24, 2020
e064b48
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 25, 2020
3c69727
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 25, 2020
f373c10
Merge branch 'master' into cypress-siem-jenkins-new-data
MadameSheema Feb 25, 2020
e43a890
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 25, 2020
3fe6c09
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 25, 2020
076bd0a
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 25, 2020
7d5741b
fixes url flaky test
MadameSheema Feb 25, 2020
089249f
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 26, 2020
abdcbfc
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 26, 2020
d612825
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 26, 2020
775d019
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 26, 2020
a977fba
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 26, 2020
4a0ec50
Merge branch 'master' into cypress-siem-jenkins-new-data
elasticmachine Feb 26, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 48 additions & 49 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,63 +9,62 @@ stage("Kibana Pipeline") { // This stage is just here to help the BlueOcean UI a
ansiColor('xterm') {
githubPr.withDefaultPrComments {
catchError {
retryable.enable()
parallel([
'kibana-intake-agent': kibanaPipeline.intakeWorker('kibana-intake', './test/scripts/jenkins_unit.sh'),
'x-pack-intake-agent': kibanaPipeline.intakeWorker('x-pack-intake', './test/scripts/jenkins_xpack.sh'),
'kibana-oss-agent': kibanaPipeline.withWorkers('kibana-oss-tests', { kibanaPipeline.buildOss() }, [
// 'oss-firefoxSmoke': kibanaPipeline.getPostBuildWorker('firefoxSmoke', {
// retryable('kibana-firefoxSmoke') {
// runbld('./test/scripts/jenkins_firefox_smoke.sh', 'Execute kibana-firefoxSmoke')
// }
// }),
'oss-ciGroup1': kibanaPipeline.getOssCiGroupWorker(1),
'oss-ciGroup2': kibanaPipeline.getOssCiGroupWorker(2),
'oss-ciGroup3': kibanaPipeline.getOssCiGroupWorker(3),
'oss-ciGroup4': kibanaPipeline.getOssCiGroupWorker(4),
'oss-ciGroup5': kibanaPipeline.getOssCiGroupWorker(5),
'oss-ciGroup6': kibanaPipeline.getOssCiGroupWorker(6),
'oss-ciGroup7': kibanaPipeline.getOssCiGroupWorker(7),
'oss-ciGroup8': kibanaPipeline.getOssCiGroupWorker(8),
'oss-ciGroup9': kibanaPipeline.getOssCiGroupWorker(9),
'oss-ciGroup10': kibanaPipeline.getOssCiGroupWorker(10),
'oss-ciGroup11': kibanaPipeline.getOssCiGroupWorker(11),
'oss-ciGroup12': kibanaPipeline.getOssCiGroupWorker(12),
'oss-accessibility': kibanaPipeline.getPostBuildWorker('accessibility', {
retryable('kibana-accessibility') {
runbld('./test/scripts/jenkins_accessibility.sh', 'Execute kibana-accessibility')
}
}),
// 'kibana-intake-agent': kibanaPipeline.intakeWorker('kibana-intake', './test/scripts/jenkins_unit.sh'),
// 'x-pack-intake-agent': kibanaPipeline.intakeWorker('x-pack-intake', './test/scripts/jenkins_xpack.sh'),
// 'kibana-oss-agent': kibanaPipeline.withWorkers('kibana-oss-tests', { kibanaPipeline.buildOss() }, [
// 'oss-firefoxSmoke': kibanaPipeline.getPostBuildWorker('firefoxSmoke', {
// retryable('kibana-firefoxSmoke') {
// runbld('./test/scripts/jenkins_firefox_smoke.sh', 'Execute kibana-firefoxSmoke')
// }
// }),
// 'oss-ciGroup1': kibanaPipeline.getOssCiGroupWorker(1),
// 'oss-ciGroup2': kibanaPipeline.getOssCiGroupWorker(2),
// 'oss-ciGroup3': kibanaPipeline.getOssCiGroupWorker(3),
// 'oss-ciGroup4': kibanaPipeline.getOssCiGroupWorker(4),
// 'oss-ciGroup5': kibanaPipeline.getOssCiGroupWorker(5),
// 'oss-ciGroup6': kibanaPipeline.getOssCiGroupWorker(6),
// 'oss-ciGroup7': kibanaPipeline.getOssCiGroupWorker(7),
// 'oss-ciGroup8': kibanaPipeline.getOssCiGroupWorker(8),
// 'oss-ciGroup9': kibanaPipeline.getOssCiGroupWorker(9),
// 'oss-ciGroup10': kibanaPipeline.getOssCiGroupWorker(10),
// 'oss-ciGroup11': kibanaPipeline.getOssCiGroupWorker(11),
// 'oss-ciGroup12': kibanaPipeline.getOssCiGroupWorker(12),
// 'oss-accessibility': kibanaPipeline.getPostBuildWorker('accessibility', {
// retryable('kibana-accessibility') {
// runbld('./test/scripts/jenkins_accessibility.sh', 'Execute kibana-accessibility')
// }
// }),
// 'oss-visualRegression': kibanaPipeline.getPostBuildWorker('visualRegression', { runbld('./test/scripts/jenkins_visual_regression.sh', 'Execute kibana-visualRegression') }),
]),
// ]),
'kibana-xpack-agent': kibanaPipeline.withWorkers('kibana-xpack-tests', { kibanaPipeline.buildXpack() }, [
// 'xpack-firefoxSmoke': kibanaPipeline.getPostBuildWorker('xpack-firefoxSmoke', {
// retryable('xpack-firefoxSmoke') {
// runbld('./test/scripts/jenkins_xpack_firefox_smoke.sh', 'Execute xpack-firefoxSmoke')
// }
// }),
'xpack-ciGroup1': kibanaPipeline.getXpackCiGroupWorker(1),
'xpack-ciGroup2': kibanaPipeline.getXpackCiGroupWorker(2),
'xpack-ciGroup3': kibanaPipeline.getXpackCiGroupWorker(3),
'xpack-ciGroup4': kibanaPipeline.getXpackCiGroupWorker(4),
'xpack-ciGroup5': kibanaPipeline.getXpackCiGroupWorker(5),
'xpack-ciGroup6': kibanaPipeline.getXpackCiGroupWorker(6),
'xpack-ciGroup7': kibanaPipeline.getXpackCiGroupWorker(7),
'xpack-ciGroup8': kibanaPipeline.getXpackCiGroupWorker(8),
'xpack-ciGroup9': kibanaPipeline.getXpackCiGroupWorker(9),
'xpack-ciGroup10': kibanaPipeline.getXpackCiGroupWorker(10),
'xpack-accessibility': kibanaPipeline.getPostBuildWorker('xpack-accessibility', {
retryable('xpack-accessibility') {
runbld('./test/scripts/jenkins_xpack_accessibility.sh', 'Execute xpack-accessibility')
}
}),
// 'xpack-firefoxSmoke': kibanaPipeline.getPostBuildWorker('xpack-firefoxSmoke', {
// retryable('xpack-firefoxSmoke') {
// runbld('./test/scripts/jenkins_xpack_firefox_smoke.sh', 'Execute xpack-firefoxSmoke')
// }
// }),
// 'xpack-ciGroup1': kibanaPipeline.getXpackCiGroupWorker(1),
//'xpack-ciGroup2': kibanaPipeline.getXpackCiGroupWorker(2),
//'xpack-ciGroup3': kibanaPipeline.getXpackCiGroupWorker(3),
//'xpack-ciGroup4': kibanaPipeline.getXpackCiGroupWorker(4),
//'xpack-ciGroup5': kibanaPipeline.getXpackCiGroupWorker(5),
//'xpack-ciGroup6': kibanaPipeline.getXpackCiGroupWorker(6),
//'xpack-ciGroup7': kibanaPipeline.getXpackCiGroupWorker(7),
//'xpack-ciGroup8': kibanaPipeline.getXpackCiGroupWorker(8),
//'xpack-ciGroup9': kibanaPipeline.getXpackCiGroupWorker(9),
//'xpack-ciGroup10': kibanaPipeline.getXpackCiGroupWorker(10),
//'xpack-accessibility': kibanaPipeline.getPostBuildWorker('xpack-accessibility', {
// retryable('xpack-accessibility') {
// runbld('./test/scripts/jenkins_xpack_accessibility.sh', 'Execute xpack-accessibility')
// }
// }),
// 'xpack-visualRegression': kibanaPipeline.getPostBuildWorker('xpack-visualRegression', { runbld('./test/scripts/jenkins_xpack_visual_regression.sh', 'Execute xpack-visualRegression') }),
'xpack-siemCypress': kibanaPipeline.getPostBuildWorker('xpack-siemCypress', { runbld('./test/scripts/jenkins_siem_cypress.sh', 'Execute siem-cypress') }),
]),
])
}
}

retryable.printFlakyFailures()
// retryable.printFlakyFailures()
kibanaPipeline.sendMail()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ export class FunctionalTestRunner {

await providers.loadAll();

const customTestRunner = config.get('testRunner');
if (customTestRunner) {
this.log.warning(
'custom test runner defined, ignoring all mocha/suite/filtering related options'
);
return (await providers.invokeProviderFn(customTestRunner)) || 0;
}

const mocha = await setupMocha(this.lifecycle, this.log, config, providers);
await this.lifecycle.beforeTests.trigger();
this.log.info('Starting tests');
Expand All @@ -70,6 +78,10 @@ export class FunctionalTestRunner {

async getTestStats() {
return await this._run(async (config, coreProviders) => {
if (config.get('testRunner')) {
throw new Error('Unable to get test stats for config that uses a custom test runner');
}

// replace the function of custom service providers so that they return
// promise-like objects which never resolve, essentially disabling them
// allowing us to load the test files and populate the mocha suites
Expand Down Expand Up @@ -108,8 +120,11 @@ export class FunctionalTestRunner {
const config = await readConfigFile(this.log, this.configFile, this.configOverrides);
this.log.info('Config loaded');

if (config.get('testFiles').length === 0) {
throw new Error('No test files defined.');
if (
(!config.get('testFiles') || config.get('testFiles').length === 0) &&
!config.get('testRunner')
) {
throw new Error('No tests defined.');
}

// base level services that functional_test_runner exposes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,8 @@ const defaultRelativeToConfigPath = (path: string) => {

export const schema = Joi.object()
.keys({
testFiles: Joi.array()
.items(Joi.string())
.when('$primary', {
is: true,
then: Joi.required(),
otherwise: Joi.any().default([]),
}),
testFiles: Joi.array().items(Joi.string()),
testRunner: Joi.func(),

excludeTestFiles: Joi.array()
.items(Joi.string())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,15 @@ export class ProviderCollection {
}
}

public invokeProviderFn(provider: (args: any) => any) {
return provider({
getService: this.getService,
hasService: this.hasService,
getPageObject: this.getPageObject,
getPageObjects: this.getPageObjects,
});
}

private findProvider(type: string, name: string) {
return this.providers.find(p => p.type === type && p.name === name);
}
Expand All @@ -89,12 +98,7 @@ export class ProviderCollection {
}

if (!instances.has(provider)) {
let instance = provider({
getService: this.getService,
hasService: this.hasService,
getPageObject: this.getPageObject,
getPageObjects: this.getPageObjects,
});
let instance = this.invokeProviderFn(provider);

if (instance && typeof instance.then === 'function') {
instance = createAsyncInstance(type, name, instance);
Expand Down
2 changes: 2 additions & 0 deletions packages/kbn-test/src/functional_tests/cli/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@
*/

export { runTestsCli } from './run_tests/cli';
export { processOptions as processRunTestsCliOptions } from './run_tests/args';
export { startServersCli } from './start_servers/cli';
export { processOptions as processStartServersCliOptions } from './start_servers/args';
47 changes: 30 additions & 17 deletions packages/kbn-test/src/functional_tests/lib/run_ftr.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,32 @@ async function createFtr({
}) {
const config = await readConfigFile(log, configPath);

return new FunctionalTestRunner(log, configPath, {
mochaOpts: {
bail: !!bail,
grep,
},
kbnTestServer: {
installDir,
},
updateBaselines,
suiteTags: {
include: [...suiteTags.include, ...config.get('suiteTags.include')],
exclude: [...suiteTags.exclude, ...config.get('suiteTags.exclude')],
},
});
return {
config,
ftr: new FunctionalTestRunner(log, configPath, {
mochaOpts: {
bail: !!bail,
grep,
},
kbnTestServer: {
installDir,
},
updateBaselines,
suiteTags: {
include: [...suiteTags.include, ...config.get('suiteTags.include')],
exclude: [...suiteTags.exclude, ...config.get('suiteTags.exclude')],
},
}),
};
}

export async function assertNoneExcluded({ configPath, options }) {
const ftr = await createFtr({ configPath, options });
const { config, ftr } = await createFtr({ configPath, options });

if (config.get('testRunner')) {
// tests with custom test runners are not included in this check
return;
}

const stats = await ftr.getTestStats();
if (stats.excludedTests.length > 0) {
Expand All @@ -60,7 +68,7 @@ export async function assertNoneExcluded({ configPath, options }) {
}

export async function runFtr({ configPath, options }) {
const ftr = await createFtr({ configPath, options });
const { ftr } = await createFtr({ configPath, options });

const failureCount = await ftr.run();
if (failureCount > 0) {
Expand All @@ -71,7 +79,12 @@ export async function runFtr({ configPath, options }) {
}

export async function hasTests({ configPath, options }) {
const ftr = await createFtr({ configPath, options });
const { ftr, config } = await createFtr({ configPath, options });

if (config.get('testRunner')) {
// configs with custom test runners are assumed to always have tests
return true;
}
const stats = await ftr.getTestStats();
return stats.testCount > 0;
}
11 changes: 9 additions & 2 deletions packages/kbn-test/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,15 @@
* under the License.
*/

// @ts-ignore not typed yet
export { runTestsCli, startServersCli } from './functional_tests/cli';
import {
runTestsCli,
processRunTestsCliOptions,
startServersCli,
processStartServersCliOptions,
// @ts-ignore not typed yet
} from './functional_tests/cli';

export { runTestsCli, processRunTestsCliOptions, startServersCli, processStartServersCliOptions };

// @ts-ignore not typed yet
export { runTests, startServers } from './functional_tests/tasks';
Expand Down
21 changes: 21 additions & 0 deletions test/scripts/jenkins_siem_cypress.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

source test/scripts/jenkins_test_setup.sh

installDir="$PARENT_DIR/install/kibana"
destDir="${installDir}-${CI_WORKER_NUMBER}"
cp -R "$installDir" "$destDir"

export KIBANA_INSTALL_DIR="$destDir"

echo " -> Running SIEM cypress tests"
cd "$XPACK_DIR"

checks-reporter-with-killswitch "SIEM Cypress Tests" \
node scripts/functional_tests \
--debug --bail \
--kibana-install-dir "$KIBANA_INSTALL_DIR" \
--config test/siem_cypress/config.ts

echo ""
echo ""
36 changes: 11 additions & 25 deletions test/scripts/jenkins_xpack_ci_group.sh
Original file line number Diff line number Diff line change
@@ -1,35 +1,21 @@
#!/usr/bin/env bash

source test/scripts/jenkins_test_setup_xpack.sh
source test/scripts/jenkins_test_setup.sh

if [[ -z "$CODE_COVERAGE" ]]; then
echo " -> Running functional and api tests"
installDir="$PARENT_DIR/install/kibana"
destDir="${installDir}-${CI_WORKER_NUMBER}"
cp -R "$installDir" "$destDir"

checks-reporter-with-killswitch "X-Pack Chrome Functional tests / Group ${CI_GROUP}" \
export KIBANA_INSTALL_DIR="$destDir"

echo " -> Running SIEM cypress tests"
cd "$XPACK_DIR"

checks-reporter-with-killswitch "SIEM Cypress Tests" \
node scripts/functional_tests \
--debug --bail \
--kibana-install-dir "$KIBANA_INSTALL_DIR" \
--include-tag "ciGroup$CI_GROUP"
--config test/siem_cypress/config.ts

echo ""
echo ""
else
echo " -> Running X-Pack functional tests with code coverage"
export NODE_OPTIONS=--max_old_space_size=8192

echo " -> making hard link clones"
cd ..
cp -RlP kibana "kibana${CI_GROUP}"
cd "kibana${CI_GROUP}/x-pack"

echo " -> running tests from the clone folder"
node scripts/functional_tests --debug --include-tag "ciGroup$CI_GROUP"

if [[ -d ../target/kibana-coverage/functional ]]; then
echo " -> replacing kibana${CI_GROUP} with kibana in json files"
sed -i "s|kibana${CI_GROUP}|kibana|g" ../target/kibana-coverage/functional/*.json
echo " -> copying coverage to the original folder"
mkdir -p ../../kibana/target/kibana-coverage/functional
cp -R ../target/kibana-coverage/functional/. ../../kibana/target/kibana-coverage/functional/
fi
fi
Loading