mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 03:01:21 -04:00
[Search] test: removing stale cypress & functional_enterprise_search references (#220446)
## Summary Removed old cypress and functional_enterprise_search code and references. They should have been removed for 9.0 but fell through the cracks. ### Checklist - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed
This commit is contained in:
parent
06c7c434f4
commit
9fc42af400
32 changed files with 19 additions and 727 deletions
|
@ -1,11 +1,5 @@
|
||||||
disabled:
|
disabled:
|
||||||
# Base config files, only necessary to inform config finding script
|
# Base config files, only necessary to inform config finding script
|
||||||
- x-pack/test/functional_enterprise_search/base_config.ts
|
|
||||||
|
|
||||||
# Cypress configs, for now these are still run manually
|
|
||||||
- x-pack/test/functional_enterprise_search/cypress.config.ts
|
|
||||||
- x-pack/test/functional_enterprise_search/visual_config.ts
|
|
||||||
- x-pack/test/functional_enterprise_search/cli_config.ts
|
|
||||||
|
|
||||||
defaultQueue: 'n2-4-spot'
|
defaultQueue: 'n2-4-spot'
|
||||||
enabled:
|
enabled:
|
||||||
|
|
|
@ -73,68 +73,27 @@ sh jest.sh public/applications/shared/flash_messages/flash_messages_logic.test.t
|
||||||
|
|
||||||
### E2E tests
|
### E2E tests
|
||||||
|
|
||||||
We currently have two testing libraries in which we run E2E tests:
|
|
||||||
|
|
||||||
- [Cypress](#cypress-tests)
|
|
||||||
- Will contain the majority of our happy path E2E testing
|
|
||||||
- [Kibana's Functional Test Runner (FTR)](#kibana-ftr-tests)
|
- [Kibana's Functional Test Runner (FTR)](#kibana-ftr-tests)
|
||||||
- Contains basic tests that only run when the Enterprise Search host is not configured
|
|
||||||
- It's likely we will not continue to expand these tests, and might even trim some over time (to be replaced by Cypress)
|
|
||||||
|
|
||||||
#### Cypress tests
|
|
||||||
|
|
||||||
Documentation: https://docs.cypress.io/
|
|
||||||
|
|
||||||
Cypress tests can be run directly from the `x-pack/solutions/search/plugins/enterprise_search` folder. You can use our handy cypress.sh script to run specific product test suites:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Basic syntax
|
|
||||||
sh cypress.sh {run|open|dev}
|
|
||||||
|
|
||||||
# Examples
|
|
||||||
sh cypress.sh run # run Enterprise Search tests
|
|
||||||
sh cypress.sh open # open Enterprise Search tests
|
|
||||||
sh cypress.sh dev # run "cypress only" with Enterprise Search config
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
There are 3 ways you can spin up the required environments to run our Cypress tests:
|
|
||||||
|
|
||||||
1. Running Cypress against local dev environments:
|
|
||||||
- Elasticsearch:
|
|
||||||
- Start a local instance, or use Kibana's `yarn es snapshot` command (with all configurations/versions required to run Enterprise Search locally)
|
|
||||||
- NOTE: We generally recommend a fresh instance (or blowing away your `data/` folder) to reduce false negatives due to custom user data
|
|
||||||
- Kibana:
|
|
||||||
- You **must** have `csp.strict: false` and `csp.warnLegacyBrowsers: false` set in your `kibana.dev.yml`.
|
|
||||||
- You should either start Kibana with `yarn start --no-base-path` or pass `--config baseUrl=http://localhost:5601/xyz` into your Cypress command.
|
|
||||||
- Enterprise Search:
|
|
||||||
- Nothing extra is required to run Cypress tests, only what is already needed to run Kibana/Enterprise Search locally.
|
|
||||||
2. Running Cypress against Kibana's functional test server:
|
|
||||||
- Make sure docker is up and running in you system
|
|
||||||
- From the `x-pack/` project folder, run `sh cypress.sh` which will spin up Kibana, Elasticsearch through functional test runners and Enterprise Search instance in Docker.
|
|
||||||
3. Running Cypress against Enterprise Search dockerized stack scripts
|
|
||||||
- :warning: This is for Enterprise Search devs only, as this requires access to our closed source Enterprise Search repo
|
|
||||||
- `stack_scripts/start-with-es-native-auth.sh --with-kibana`
|
|
||||||
- Note that the tradeoff of an easier one-command start experience is you will not be able to run Cypress tests against any local changes.
|
|
||||||
|
|
||||||
##### Debugging
|
|
||||||
|
|
||||||
Cypress can either run silently in a headless browser in the command line (`run` or `--headless` mode), which is the default mode used by CI, or opened interactively in an included app and the Chrome browser (`open` or `--headed --no-exit` mode).
|
|
||||||
|
|
||||||
For debugging failures locally, we generally recommend using open mode, which allows you to run a single specific test suite, and makes browser dev tools available to you so you can pause and inspect DOM as needed.
|
|
||||||
|
|
||||||
> :warning: Although this is more extra caution than a hard-and-fast rule, we generally recommend taking a break and not clicking or continuing to use the app while tests are running. This can eliminate or lower the possibility of hard-to-reproduce/intermittently flaky behavior and timeouts due to user interference.
|
|
||||||
|
|
||||||
##### Artifacts
|
|
||||||
|
|
||||||
All failed tests will output a screenshot to the `x-pack/solutions/search/plugins/enterprise_search/target/cypress/screenshots` folder. We strongly recommend starting there for debugging failed tests to inspect error messages and UI state at point of failure.
|
|
||||||
|
|
||||||
To track what Cypress is doing while running tests, you can pass in `--config video=true` which will output screencaptures to a `videos/` folder for all tests (both successful and failing). This can potentially provide more context leading up to the failure point, if a static screenshot isn't providing enough information.
|
|
||||||
|
|
||||||
> :information_source: We have videos turned off in our config to reduce test runtime, especially on CI, but suggest re-enabling it for any deep debugging.
|
|
||||||
|
|
||||||
#### Kibana FTR tests
|
#### Kibana FTR tests
|
||||||
|
|
||||||
See [our functional test runner README](../../../../test/functional_enterprise_search).
|
FTR configs for stateful search solution are listed in `.buildkite/ftr_search_stateful_configs.yml`, the main set of functional tests for this plugin are in the [x-pack/test/functional_search](../../../../test/functional_search/) suite of tests.
|
||||||
|
|
||||||
Our automated accessibility tests can be found in [x-pack/test/accessibility/apps](../../../../test/accessibility/apps/group3/enterprise_search.ts).
|
These can be run from the root of the Kibana folder with the following command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
node scripts/functional_tests --config=x-pack/test/functional_search/config.ts --bail --quiet
|
||||||
|
```
|
||||||
|
|
||||||
|
Or if you are updating the tests it can be easier to run the server first so you can re-run the tests many times:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
node scripts/functional_tests_server --config=x-pack/test/functional_search/config.ts
|
||||||
|
```
|
||||||
|
One this commands is finished starting the server you run the tests by opening another terminal and running:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
node scripts/functional_test_runner --config=x-pack/test/functional_search/config.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
These scripts can be used with any FTR config.
|
||||||
|
|
|
@ -19,8 +19,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { defineCypressConfig } from '@kbn/cypress-config';
|
|
||||||
|
|
||||||
export default defineCypressConfig({
|
|
||||||
defaultCommandTimeout: 60000,
|
|
||||||
execTimeout: 120000,
|
|
||||||
pageLoadTimeout: 120000,
|
|
||||||
requestTimeout: 60000,
|
|
||||||
responseTimeout: 60000,
|
|
||||||
retries: {
|
|
||||||
runMode: 2,
|
|
||||||
},
|
|
||||||
screenshotOnRunFailure: false,
|
|
||||||
screenshotsFolder: '../../../../../target/kibana-fleet/cypress/screenshots',
|
|
||||||
trashAssetsBeforeRuns: false,
|
|
||||||
video: false,
|
|
||||||
videosFolder: '../../../../../target/kibana-fleet/cypress/videos',
|
|
||||||
viewportHeight: 900,
|
|
||||||
viewportWidth: 1440,
|
|
||||||
|
|
||||||
// eslint-disable-next-line sort-keys
|
|
||||||
env: {
|
|
||||||
configport: '5601',
|
|
||||||
hostname: 'localhost',
|
|
||||||
protocol: 'http',
|
|
||||||
},
|
|
||||||
// eslint-disable-next-line sort-keys
|
|
||||||
e2e: {
|
|
||||||
baseUrl: 'http://localhost:5601',
|
|
||||||
supportFile: './cypress/support/e2e.ts',
|
|
||||||
},
|
|
||||||
});
|
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
"mongo_test": {
|
|
||||||
"host": "",
|
|
||||||
"username": "",
|
|
||||||
"password": "",
|
|
||||||
"database": "",
|
|
||||||
"collection": ""
|
|
||||||
},
|
|
||||||
"crawler_test": {
|
|
||||||
"domain": ""
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# Use either `cypress run` or `cypress open` - defaults to run
|
|
||||||
MODE="${1}"
|
|
||||||
|
|
||||||
if [ "$MODE" == "dev" ]; then
|
|
||||||
echo "Running dev mode. This will run cypress only"
|
|
||||||
node ../../../../../node_modules/.bin/cypress open --config-file ./cypress.config.ts ${2}
|
|
||||||
else
|
|
||||||
if ! docker info > /dev/null 2>&1; then
|
|
||||||
echo "This script needs docker to run. Start docker and try again."
|
|
||||||
echo "If you are testing against your own setup use ./cypress.sh dev"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$MODE" == "open" ]; then
|
|
||||||
node ../../../../../scripts/functional_tests --config ../../test/functional_enterprise_search/visual_config.ts
|
|
||||||
else
|
|
||||||
node ../../../../../scripts/functional_tests --config ../../test/functional_enterprise_search/cli_config.ts
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { login } from '../../tasks/login';
|
|
||||||
|
|
||||||
import { NEW_INDEX_CARD, CRAWLER_INDEX, INDEX_OVERVIEW, ROUTES, getIndexRoute } from './selectors';
|
|
||||||
|
|
||||||
describe('Enterprise Search Crawler', () => {
|
|
||||||
it('test', () => {
|
|
||||||
const envConfig = Cypress.env('crawler_test');
|
|
||||||
const indexName = 'cypress-crawler-' + Math.random();
|
|
||||||
|
|
||||||
login();
|
|
||||||
cy.visit(ROUTES.NEW_INDEX);
|
|
||||||
|
|
||||||
// Crawler selected by default
|
|
||||||
cy.getBySel(NEW_INDEX_CARD.SELECT_CRAWLER).click();
|
|
||||||
|
|
||||||
// we are in correct route
|
|
||||||
cy.url().should('contain', ROUTES.NEW_INDEX);
|
|
||||||
|
|
||||||
cy.getBySel(CRAWLER_INDEX.CREATE_BUTTON).should('be.disabled');
|
|
||||||
|
|
||||||
// type new name
|
|
||||||
cy.getBySel(CRAWLER_INDEX.INDEX_NAME_INPUT).type(indexName);
|
|
||||||
|
|
||||||
// create index
|
|
||||||
cy.getBySel(CRAWLER_INDEX.CREATE_BUTTON).click();
|
|
||||||
|
|
||||||
// make sure we are in new index
|
|
||||||
cy.url().should('contain', getIndexRoute(indexName) + 'domain_management');
|
|
||||||
|
|
||||||
cy.getBySel(CRAWLER_INDEX.DOMAIN_MANAGEMENT.DOMAIN_INPUT).type(envConfig.domain);
|
|
||||||
cy.getBySel(CRAWLER_INDEX.DOMAIN_MANAGEMENT.DOMAIN_BUTTON).click();
|
|
||||||
|
|
||||||
cy.getBySel(CRAWLER_INDEX.DOMAIN_MANAGEMENT.SUBMIT_BUTTON).should('be.enabled');
|
|
||||||
cy.getBySel(CRAWLER_INDEX.DOMAIN_MANAGEMENT.SUBMIT_BUTTON).click();
|
|
||||||
|
|
||||||
cy.getBySel(CRAWLER_INDEX.CRAWL_DROPDOWN).should('be.enabled');
|
|
||||||
cy.getBySel(CRAWLER_INDEX.CRAWL_DROPDOWN).click();
|
|
||||||
cy.getBySel(CRAWLER_INDEX.CRAWL_ALL_DOMAINS).click();
|
|
||||||
|
|
||||||
// go to overview tab
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.TABS.OVERVIEW).click();
|
|
||||||
|
|
||||||
// Page header has index name
|
|
||||||
cy.get('main header h1').should('contain.text', indexName);
|
|
||||||
// check Ingestion Type stat is Crawler
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.INGESTION_TYPE).should('contain.text', 'Crawler');
|
|
||||||
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.DOCUMENT_COUNT).should((el) => {
|
|
||||||
const text = el.text();
|
|
||||||
const count = parseInt(text.match(/[0-9]+/g), 10);
|
|
||||||
expect(count).to.gt(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,95 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { login } from '../../../tasks/login';
|
|
||||||
import {
|
|
||||||
CONNECTOR_INDEX,
|
|
||||||
getIndexRoute,
|
|
||||||
INDEX_OVERVIEW,
|
|
||||||
NEW_INDEX_CARD,
|
|
||||||
NEW_CONNECTOR_PAGE,
|
|
||||||
ROUTES,
|
|
||||||
SELECT_CONNECTOR,
|
|
||||||
SEARCH_INDICES,
|
|
||||||
} from '../selectors';
|
|
||||||
|
|
||||||
describe('Enterprise Search MongoDB connector', () => {
|
|
||||||
it('succesfully syncs documents with single sync', () => {
|
|
||||||
// Get configuration information from cypress.env.json
|
|
||||||
const mongoConfig = Cypress.env('mongo_test');
|
|
||||||
const indexName = 'cypress-mongodb-' + Math.random();
|
|
||||||
const baseUrl = Cypress.config().baseUrl;
|
|
||||||
login();
|
|
||||||
|
|
||||||
cy.visit(ROUTES.SEARCH_INDICES_OVERVIEW);
|
|
||||||
cy.getBySel(SEARCH_INDICES.CREATE_INDEX_BUTTON).click();
|
|
||||||
|
|
||||||
cy.url().should('eq', baseUrl + ROUTES.NEW_INDEX);
|
|
||||||
|
|
||||||
// select connector
|
|
||||||
cy.getBySel(NEW_INDEX_CARD.SELECT_CONNECTOR).click();
|
|
||||||
|
|
||||||
// we are in correct route
|
|
||||||
cy.url().should('contain', ROUTES.SELECT_CONNECTOR);
|
|
||||||
|
|
||||||
// Select MongoDB from the list
|
|
||||||
cy.get('#checkableCard-mongodb').should('not.be.selected');
|
|
||||||
cy.get('#checkableCard-mongodb-details')
|
|
||||||
.find('a')
|
|
||||||
.invoke('attr', 'href')
|
|
||||||
.should('include', 'connectors-mongodb.html');
|
|
||||||
|
|
||||||
cy.get('#checkableCard-mongodb').click();
|
|
||||||
|
|
||||||
cy.getBySel(SELECT_CONNECTOR.SELECT_AND_CONFIGURE_BUTTON).click();
|
|
||||||
|
|
||||||
// Connector URL, mongo selected
|
|
||||||
cy.url().should('contain', 'service_type=mongodb');
|
|
||||||
|
|
||||||
cy.getBySel(NEW_CONNECTOR_PAGE.INDEX_NAME_INPUT).type(indexName);
|
|
||||||
|
|
||||||
// create index
|
|
||||||
cy.getBySel(NEW_CONNECTOR_PAGE.CREATE_BUTTON).click();
|
|
||||||
|
|
||||||
// make sure we are in new index route
|
|
||||||
cy.url().should('contain', getIndexRoute(indexName) + 'configuration');
|
|
||||||
|
|
||||||
// Fill in connector configuration
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.getConfigurationRow('host')).type(mongoConfig.host);
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.getConfigurationRow('user')).type(mongoConfig.username);
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.getConfigurationRow('password')).type(mongoConfig.password);
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.getConfigurationRow('database')).type(mongoConfig.database);
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.getConfigurationRow('collection')).type(mongoConfig.collection);
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.SAVE_CONFIG).click();
|
|
||||||
|
|
||||||
// Wait until configuration is saved
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.EDIT_CONFIG);
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.SET_SCHEDULE_BUTTON).click();
|
|
||||||
|
|
||||||
// Scheduling Tab opened
|
|
||||||
cy.url().should('contain', getIndexRoute(indexName) + 'scheduling');
|
|
||||||
|
|
||||||
// Start one time sync
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.HEADER_SYNC_MENU).click();
|
|
||||||
cy.getBySel(CONNECTOR_INDEX.HEADER_SYNC_MENU_START).click();
|
|
||||||
|
|
||||||
// go to overview tab
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.TABS.OVERVIEW).click();
|
|
||||||
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.INGESTION_TYPE).should('contain.text', 'Connector');
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.CONNECTOR_TYPE).should('contain.text', 'MongoDB');
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.INGESTION_STATUS).should('contain.text', 'Configured');
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.INGESTION_STATUS).should('contain.text', 'Connected');
|
|
||||||
|
|
||||||
// Wait until document count > 0
|
|
||||||
cy.getBySel(INDEX_OVERVIEW.STATS.DOCUMENT_COUNT).should((el) => {
|
|
||||||
const text = el.text();
|
|
||||||
const count = parseInt(text.match(/[0-9]+/g), 10);
|
|
||||||
expect(count).to.gt(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,70 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export const ROUTES = {
|
|
||||||
CRAWLER_INDEX: '/app/elasticsearch/content/crawlers/new_crawler',
|
|
||||||
NEW_INDEX: '/app/elasticsearch/content/search_indices/new_index',
|
|
||||||
SEARCH_INDICES_OVERVIEW: '/app/elasticsearch/content/search_indices/',
|
|
||||||
SELECT_CONNECTOR: '/app/elasticsearch/content/connectors/select_connector',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const SEARCH_INDICES = {
|
|
||||||
CREATE_INDEX_BUTTON: 'entSearchContent-searchIndices-createButton',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const SELECT_CONNECTOR = {
|
|
||||||
SELECT_AND_CONFIGURE_BUTTON: 'entSearchContent-connector-selectConnector-selectAndConfigure',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const NEW_CONNECTOR_PAGE = {
|
|
||||||
CREATE_BUTTON: 'entSearchContent-connector-newIndex-createIndex',
|
|
||||||
INDEX_NAME_INPUT: 'entSearchContent-connector-newIndex-editName',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const CONNECTOR_INDEX = {
|
|
||||||
EDIT_CONFIG: 'entSearchContent-connector-configuration-editConfiguration',
|
|
||||||
HEADER_SYNC_MENU: 'entSearchContent-connector-header-sync-menu',
|
|
||||||
HEADER_SYNC_MENU_START: 'entSearchContent-connector-header-sync-startSync',
|
|
||||||
SAVE_CONFIG: 'entSearchContent-connector-configuration-saveConfiguration',
|
|
||||||
SET_SCHEDULE_BUTTON: 'entSearchContent-connector-configuration-setScheduleAndSync',
|
|
||||||
getConfigurationRow: (rowkey: string) =>
|
|
||||||
`entSearchContent-connector-configuration-formrow-${rowkey}`,
|
|
||||||
};
|
|
||||||
|
|
||||||
export const NEW_INDEX_CARD = {
|
|
||||||
SELECT_CONNECTOR: 'entSearchContent-newIndexCard-button-connector',
|
|
||||||
SELECT_CRAWLER: 'entSearchContent-newIndexCard-button-crawler',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const CRAWLER_INDEX = {
|
|
||||||
CRAWL_ALL_DOMAINS: 'entSearchContent-crawler-startCrawlMenu-crawlAllDomains',
|
|
||||||
CRAWL_DROPDOWN: 'entSearchContent-crawler-startCrawlMenu-menuButton',
|
|
||||||
CREATE_BUTTON: 'entSearchContent-crawler-newIndex-createIndex',
|
|
||||||
DOMAIN_MANAGEMENT: {
|
|
||||||
DOMAIN_BUTTON: 'entSearchContent-crawler-addDomainForm-validate-button',
|
|
||||||
DOMAIN_INPUT: 'entSearchContent-crawler-addDomainForm-validate-input',
|
|
||||||
SUBMIT_BUTTON: 'entSearchContent-crawler-addDomain-submitButton',
|
|
||||||
},
|
|
||||||
INDEX_NAME_INPUT: 'entSearchContent-crawler-newIndex-editName',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const INDEX_OVERVIEW = {
|
|
||||||
STATS: {
|
|
||||||
CONNECTOR_TYPE: 'entSearchContent-indexOverview-totalStats-connectorType',
|
|
||||||
DOCUMENT_COUNT: 'entSearchContent-indexOverview-totalStats-documentCount',
|
|
||||||
INGESTION_STATUS: 'entSearchContent-indexOverview-connectorStats-ingestionStatus',
|
|
||||||
INGESTION_TYPE: 'entSearchContent-indexOverview-totalStats-ingestionType',
|
|
||||||
},
|
|
||||||
TABS: {
|
|
||||||
CRAWLER_SCHEDULER: 'entSearchContent-index-crawler-scheduler-tab',
|
|
||||||
OVERVIEW: 'entSearchContent-index-overview-tab',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getIndexRoute = (indexName: string) => {
|
|
||||||
return `/app/elasticsearch/content/search_indices/search-${indexName}/`;
|
|
||||||
};
|
|
|
@ -1,55 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// / <reference types="cypress" />
|
|
||||||
|
|
||||||
// ***********************************************************
|
|
||||||
// This example support/index.js is processed and
|
|
||||||
// loaded automatically before your test files.
|
|
||||||
//
|
|
||||||
// This is a great place to put global configuration and
|
|
||||||
// behavior that modifies Cypress.
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off
|
|
||||||
// automatically serving support files with the
|
|
||||||
// 'supportFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/configuration
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// Enforce building this file.
|
|
||||||
export {};
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
||||||
namespace Cypress {
|
|
||||||
interface Chainable {
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
findBySel(value: string, ...args: any[]): Chainable<any>;
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
getBySel(value: string, ...args: any[]): Chainable<any>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
function getBySel(selector: string, ...args: any[]) {
|
|
||||||
return cy.get(`[data-test-subj="${selector}"]`, ...args);
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
function findBySel(selector: string, ...args: any[]) {
|
|
||||||
return cy.find(`[data-test-subj="${selector}"]`, ...args);
|
|
||||||
}
|
|
||||||
|
|
||||||
Cypress.Commands.add('getBySel', getBySel);
|
|
||||||
Cypress.Commands.add('findBySel', findBySel);
|
|
||||||
|
|
||||||
Cypress.on('uncaught:exception', () => {
|
|
||||||
return false;
|
|
||||||
});
|
|
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
const ELASTICSEARCH_USERNAME = 'elastic';
|
|
||||||
const ELASTICSEARCH_PASSWORD = 'changeme';
|
|
||||||
const LOGIN_API_ENDPOINT = '/internal/security/login';
|
|
||||||
|
|
||||||
export const constructUrlWithUser = (route: string) => {
|
|
||||||
const url = Cypress.config().baseUrl;
|
|
||||||
const kibana = new URL(String(url));
|
|
||||||
const hostname = kibana.hostname;
|
|
||||||
const username = ELASTICSEARCH_USERNAME;
|
|
||||||
const password = ELASTICSEARCH_PASSWORD;
|
|
||||||
const protocol = kibana.protocol.replace(':', '');
|
|
||||||
const port = kibana.port;
|
|
||||||
|
|
||||||
const path = `${route.startsWith('/') ? '' : '/'}${route}`;
|
|
||||||
const strUrl = `${protocol}://${username}:${password}@${hostname}:${port}${path}`;
|
|
||||||
const builtUrl = new URL(strUrl);
|
|
||||||
|
|
||||||
cy.log(`origin: ${builtUrl.href}`);
|
|
||||||
return builtUrl.href;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const login = () => {
|
|
||||||
cy.session('user', () => {
|
|
||||||
cy.request({
|
|
||||||
body: {
|
|
||||||
currentURL: '/',
|
|
||||||
params: {
|
|
||||||
password: ELASTICSEARCH_PASSWORD,
|
|
||||||
username: ELASTICSEARCH_USERNAME,
|
|
||||||
},
|
|
||||||
providerName: 'basic',
|
|
||||||
providerType: 'basic',
|
|
||||||
},
|
|
||||||
headers: { 'kbn-xsrf': 'cypress-creds-via-config' },
|
|
||||||
method: 'POST',
|
|
||||||
url: constructUrlWithUser(LOGIN_API_ENDPOINT),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "../../../../../../tsconfig.base.json",
|
|
||||||
"include": ["**/*", "../cypress.config.ts"],
|
|
||||||
"exclude": ["target/**/*"],
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "target/types",
|
|
||||||
"types": ["cypress", "node"],
|
|
||||||
"resolveJsonModule": true
|
|
||||||
},
|
|
||||||
"kbn_references": [
|
|
||||||
"@kbn/cypress-config",
|
|
||||||
// cypress projects that are nested inside of other ts project use code
|
|
||||||
// from the parent ts project in ways that can't be automatically deteceted
|
|
||||||
// at this time so we have to force the inclusion of this reference
|
|
||||||
{
|
|
||||||
"path": "../tsconfig.json",
|
|
||||||
"force": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/ai_search',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/ai_search',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/analytics',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/analytics',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/applications',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/applications',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/elasticsearch',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/elasticsearch',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { defineCypressConfig } from '@kbn/cypress-config';
|
|
||||||
|
|
||||||
export default defineCypressConfig({
|
|
||||||
defaultCommandTimeout: 120000,
|
|
||||||
e2e: {
|
|
||||||
baseUrl: 'http://localhost:5601',
|
|
||||||
supportFile: false,
|
|
||||||
},
|
|
||||||
env: {
|
|
||||||
password: 'changeme',
|
|
||||||
username: 'elastic',
|
|
||||||
},
|
|
||||||
execTimeout: 120000,
|
|
||||||
fixturesFolder: false,
|
|
||||||
pageLoadTimeout: 180000,
|
|
||||||
retries: {
|
|
||||||
runMode: 2,
|
|
||||||
},
|
|
||||||
screenshotsFolder: '../../../target/cypress/screenshots',
|
|
||||||
video: false,
|
|
||||||
videosFolder: '../../../target/cypress/videos',
|
|
||||||
viewportHeight: 1200,
|
|
||||||
viewportWidth: 1600,
|
|
||||||
});
|
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { login, checkA11y } from '../../../shared/cypress/commands';
|
|
||||||
import { homePath } from '../../../shared/cypress/routes';
|
|
||||||
|
|
||||||
context('Enterprise Search Overview', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
login();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should contain product cards', () => {
|
|
||||||
cy.visit(homePath);
|
|
||||||
cy.contains('Welcome to Elastic Enterprise Search');
|
|
||||||
|
|
||||||
cy.get('[data-test-subj="appSearchProductCard"]')
|
|
||||||
.contains('Open App Search')
|
|
||||||
.should('have.attr', 'href')
|
|
||||||
.and('match', /app_search/);
|
|
||||||
|
|
||||||
cy.get('[data-test-subj="workplaceSearchProductCard"]')
|
|
||||||
.contains('Open Workplace Search')
|
|
||||||
.should('have.attr', 'href')
|
|
||||||
.and('match', /workplace_search/);
|
|
||||||
|
|
||||||
checkA11y();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should have a setup guide', () => {
|
|
||||||
// @see https://github.com/quasarframework/quasar/issues/2233#issuecomment-492975745
|
|
||||||
// This only appears to occur for setup guides - I haven't (yet?) run into it on other pages
|
|
||||||
cy.on('uncaught:exception', (err) => {
|
|
||||||
if (err.message.includes('> ResizeObserver loop limit exceeded')) return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.visit(`${homePath}/setup_guide`);
|
|
||||||
cy.contains('Setup Guide');
|
|
||||||
cy.contains('Add your Enterprise Search host URL to your Kibana configuration');
|
|
||||||
|
|
||||||
checkA11y();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "../../shared/cypress/tsconfig.json",
|
|
||||||
"compilerOptions": { "outDir": "target/types" },
|
|
||||||
"include": ["./**/*"],
|
|
||||||
"exclude": [
|
|
||||||
"target/**/*",
|
|
||||||
],
|
|
||||||
"kbn_references": [
|
|
||||||
{ "path": "../../shared/cypress/tsconfig.json" },
|
|
||||||
// cypress projects that are nested inside of other ts project use code
|
|
||||||
// from the parent ts project in ways that can't be automatically deteceted
|
|
||||||
// at this time so we have to force the inclusion of this reference
|
|
||||||
{
|
|
||||||
"path": "../../../../tsconfig.json",
|
|
||||||
"force": true
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_overview',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_overview',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_redirect',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_redirect',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/search_experiences',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/search_experiences',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/semantic_search',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/semantic_search',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Shared non-product-specific commands
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Log in a user via XHR
|
|
||||||
* @see https://docs.cypress.io/guides/getting-started/testing-your-app#Logging-in
|
|
||||||
*/
|
|
||||||
interface Login {
|
|
||||||
username?: string;
|
|
||||||
password?: string;
|
|
||||||
}
|
|
||||||
export const login = ({
|
|
||||||
username = Cypress.env('username'),
|
|
||||||
password = Cypress.env('password'),
|
|
||||||
}: Login = {}) => {
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: '/internal/security/login',
|
|
||||||
headers: { 'kbn-xsrf': 'cypress' },
|
|
||||||
body: {
|
|
||||||
providerType: 'basic',
|
|
||||||
providerName: 'basic',
|
|
||||||
currentURL: '/',
|
|
||||||
params: { username, password },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Cypress setup/helpers
|
|
||||||
*/
|
|
||||||
|
|
||||||
// eslint complains this should be in `dependencies` and not `devDependencies`, but these tests should only run on dev
|
|
||||||
import 'cypress-axe';
|
|
||||||
import { AXE_CONFIG, AXE_OPTIONS } from '@kbn/axe-config';
|
|
||||||
|
|
||||||
const axeConfig = {
|
|
||||||
...AXE_CONFIG,
|
|
||||||
rules: [
|
|
||||||
...AXE_CONFIG.rules,
|
|
||||||
{
|
|
||||||
id: 'landmark-no-duplicate-banner',
|
|
||||||
selector: '[data-test-subj="headerGlobalNav"]',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
const axeOptions = {
|
|
||||||
...AXE_OPTIONS,
|
|
||||||
runOnly: [...AXE_OPTIONS.runOnly, 'best-practice'],
|
|
||||||
};
|
|
||||||
|
|
||||||
// @see https://github.com/component-driven/cypress-axe#cychecka11y for params
|
|
||||||
export const checkA11y = () => {
|
|
||||||
cy.injectAxe();
|
|
||||||
cy.configureAxe(axeConfig);
|
|
||||||
const context = '.kbnAppWrapper'; // Scopes a11y checks to only our app
|
|
||||||
cy.checkA11y(context, axeOptions);
|
|
||||||
};
|
|
|
@ -1,10 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the Elastic License
|
|
||||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
||||||
* 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export const homePath = '/app/elasticsearch/overview';
|
|
||||||
export const appSearchPath = '/app/enterprise_search/app_search';
|
|
||||||
export const workplaceSearchPath = '/app/enterprise_search/workplace_search';
|
|
|
@ -1,14 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "../../../../../../../../../tsconfig.base.json",
|
|
||||||
"include": ["./**/*"],
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "target/types",
|
|
||||||
"types": ["cypress", "cypress-axe", "node"]
|
|
||||||
},
|
|
||||||
"exclude": [
|
|
||||||
"target/**/*",
|
|
||||||
],
|
|
||||||
"kbn_references": [
|
|
||||||
"@kbn/axe-config",
|
|
||||||
],
|
|
||||||
}
|
|
|
@ -19,8 +19,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/vector_search',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search/public/applications/vector_search',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,8 +23,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,8 +19,4 @@ module.exports = {
|
||||||
],
|
],
|
||||||
coverageDirectory:
|
coverageDirectory:
|
||||||
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search',
|
'<rootDir>/target/kibana-coverage/jest/x-pack/solutions/search/plugins/enterprise_search',
|
||||||
modulePathIgnorePatterns: [
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/app_search/cypress',
|
|
||||||
'<rootDir>/x-pack/solutions/search/plugins/enterprise_search/public/applications/workplace_search/cypress',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
"outDir": "target/types",
|
"outDir": "target/types",
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"public/applications/**/cypress/**/*",
|
|
||||||
"target/**/*",
|
"target/**/*",
|
||||||
],
|
],
|
||||||
"include": [
|
"include": [
|
||||||
|
@ -41,7 +40,6 @@
|
||||||
"@kbn/core-http-server",
|
"@kbn/core-http-server",
|
||||||
"@kbn/core-saved-objects-server",
|
"@kbn/core-saved-objects-server",
|
||||||
"@kbn/data-views-plugin",
|
"@kbn/data-views-plugin",
|
||||||
"@kbn/cypress-config",
|
|
||||||
"@kbn/discover-plugin",
|
"@kbn/discover-plugin",
|
||||||
"@kbn/guided-onboarding",
|
"@kbn/guided-onboarding",
|
||||||
"@kbn/shared-ux-router",
|
"@kbn/shared-ux-router",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue