Over the last few years we've increased the number of test runners.
Entry points by test type have become too lage of a category for unique
names, so this moves top level test scripts under yarn and replaces test
types with the runner name.
e.g. `yarn test:browser` -> `yarn test:karma`
Closes#41133
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* eui to v19.0.0
* typescript updates; idAria removal
* src snapshot updates
* mock euicode and euicodeblock for jest
* x-pack snapshot updates
* mock euicode for jest
* more euicode snapshots
* mock euicode in storyshots
* types/enzyme yarn.lock
* sidenav type update
* build immutable bundles for new platform plugins
* only inspect workers if configured to do so
* [navigation] use an index.scss file
* add yarn.lock symlink
* set pluginScanDirs in test so fixtures stay consistent
* cleanup helpers a little
* fix type error
* support KBN_OPTIMIZER_MAX_WORKERS for limiting workers via env
* test support for KBN_OPTIMIZER_MAX_WORKERS
* expand the available memory for workers when only running one or two
* add docs about KBN_OPTIMIZER_MAX_WORKERS environment variable
* fix README link
* update kbn/pm dist
* implement bundle caching/reuse
* update kbn/pm dist
* don't check for cache if --no-cache is passed
* update renovate config
* standardize on index.scss, move console styles over
* add support for --no-cache to cli
* include worker config vars in optimizer version
* ignore concatenated modules
* update integration test
* add safari to browserslist to avoid user-agent warnings in dev
* update docs, clean up optimizer message/misc naming
* always handle initialized messages, don't ignore states that are attached to specific events
* reword caching docs, add environment var to disable caching
* tweak logging and don't use optimizer.useBundleCache as that's disabled in dev
* handle change notifications
* batch changes for 1 second
* rename CompilerState type to CompilerMsg
* getChanges() no longer needs to assign changes to dirs
* remove unused deps
* split up run_worker.ts and share cacheKey generation logic
* add a couple docs
* update tests and remove unused imports
* specify files when creating bundle cache key
* remove one more unused import
* match existing dev cli output more closely
* update kbn/pm dist
* set KBN_NP_PLUGINS_BUILT to avoid warning in CI
* avoid extending global window type
* add note to keep pluginScanDirs in sync
* pass browserslistEnv in workerConfig so it is used for cache key
* load commons.bundle.js in parallel too
* emit initialized+success states if all bundles are cached
* load bootstraps as quickly as possible
* skip flaky suite
* bump
* update jest snapshots
* remove hashing from cache key generation
* remove unnecessary non-null assertion
* improve docs and break up Optimizer#run()
* remove unused import
* refactor kbn/optimizer to break up observable logic, implement more helpful cache invalidation logic with logging
* fix tests
* add initializing phase
* avoid rxjs observable constructor
* remove unnecessary rxjs helper, add tests for bundle cache
* update consumers of optimizer
* update readme with new call style
* replace "new platform" with "kibana platform"
* fix a couple more renames
* add support for several plain-text file formats
* fix naming of OptimizerMsg => OptimizerUpdate, use "store" naming too
* one more OptimizerMsg update
* ensure bundles are not cached when cache config is false
* test for initializing states and bundle cache events
* remove unnecessary timeout change
* Remove unnecessary helpers
* Add tests for BundleCache class
* Add tests for Bundle class
* test summarizeEvent$
* missing paths are no longer listed in mtimes map
* add tests for optimizer/cache_keys
* Add some extra docs
* Remove labeled loop
* add integration test for kbn-optimizer watcher components
* querystring-browser removed
* tweak logging a smidge, improve info and final message
* remove unused imports
* remove duplication of getModuleCount() method
* move type annotation that validates things
* clear up the build completion message
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Revert "force yarn 1.21.1 until we can handle invalid output of 1.22.0 (#56914)"
This reverts commit 5686010b46.
* move the --json argument before `workspaces` so it still works
* update kbn/pm dist
We're seeing occasional "Error: Call retries were exceeded" exception
with Terser, which should be resolved by
abfd950620,
first included in 2.3.4
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* Remove angular dependencey from vis/tooltip
* Move tooltip logic into vislib
* Remove and fix all ngMock refs in vislib tests
* Add numeral to renovate config
* Add vis_type_vislib to codeowners
* Move vis_legend into vislib and fix errors
* vis_type_vislib/public imports to be only top-level
* [kbn/ui-shared-deps] include polyfills, required by some deps
* remove unnecessary dep
* replace abort-controller for server side use
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Upgraded EUI to 18.0.0
* Fix breaks from `palette._.colors` changes
* snapshots
* Updated hard coded hex color codes in tests, fixed TS errors
* Updated a functional test's selector; added (BSD-3-Clause AND Apache-2.0) to license checker whitelist
* Functional test selector update
* Updated vega browser-ci tests for palette changes
* rebased on master
* One more location for EUI package number update and yarn lock
* Fixed lurking [but introduced] TypeScript logic bug
* Swap a prop definition for the same value but tied closer to its source
Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* feat(NA): implement dll split feature
* chore(NA): improve logic to split dlls
* feat(NA): support multiple manifests in the clean dll task
* fix(NA): patch clean dll task to support multiple manifest files
* feat(NA): shuffle seed before split dll in chunks
* chore(NA): correctly load chunks into the templates
* chore(NA): correctly load chunks on karma tests
* docs(NA): add explanation why we need a single runtime for dll chunks
* teste(NA): fix jest tests
Some maintenance and minor fixes to state containers based on experience while working with them in #53582
Patch unit tests to use current "terminology" (e.g. "transition" vs "mutation")
Fix docs where "store" was used instead of "state container"
Allow to create state container without transition.
Fix freeze function to deeply freeze objects.
Restrict State to BaseState with extends object.
in set() function, make sure the flow goes through dispatch to make sure middleware see this update
Improve type inference for useTransition()
Improve type inference for createStateContainer().
Other issues noticed, but didn't fix in reasonable time:
Can't use addMiddleware without explicit type casting #54438
Transitions and Selectors allow any state, not bind to container's state #54439
* share specific instances of some ui packages
* remove unnecessary eslint changes, every package will define deps anyway
* remove mentions of moment webpackShims in eslint resolver
* remove use of lodash
* list angular as dep for x-pack
* add operations as codeowner of shared-deps pkg
Today, apps rely on AppState and GlobalState in the ui/state_management module to deal with internal (app) and shared (global) state. These classes give apps an ability to read/write state, when is then synced to the URL as well as sessionStorage. They also react to changes in the URL and automatically update state & emit events when changes occur.
This PR introduces new state synching utilities, which together with state containers src/plugins/kibana_utils/public/state_containers will be a replacement for AppState and GlobalState in New Platform.
* Move fp-ts and immer to "." package.json
* Revert "Move fp-ts and immer to "." package.json"
This reverts commit b876df0d54.
* Second attempt, fp-ts and immer -> root
* fp-ts -> 2.3.1
* Revert x-pack/package.json
* Update fp-ts in x-pack/package.json
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
As we recently added react-use as a dependency, makes sense to clean up those generic hooks from Kibana repo.
Removed custom hooks from kibana_react and other places:
useObservable
useUnmount
useShallowCompareEffect
react-use should be used instead:
import useObservable from 'react-use/lib/useObservable'
* Instrument Kibana with APM RUM agent
* make route-change transaction work with properl url
* extract page-load transaction url from app link
* check if app is hidden and set active:false
* make distributed tracing work and merge config
* remove config/apm.js and address review
* address review comments
* add apm.js to build tassks
* move apm from dev to src
* add @types/hoist-non-react-statics which is required by react rum
* apply changes correctly from master
* chore(NA): add log options to config yml
* chore(NA): remove unwanted option from config declaration
* chore(NA): add the bootstrap for the logging rotate feature
* feat(NA): base interface setup for log rotation feature
* docs(NA): add documentation for the new logging rotate options. chore(NA): added new schema validations
* chore(NA): base lifecycle methods and logic
* feat(NA): monitor logic for log rotate feature
* fix(NA): basic log rotation lifecycle
* chore(NA): fix typo on config file
* feat(NA): add rotate files feature to log rotator
* chore(NA): fix log rotate config
* chore(NA): some tests to try logging rotate lifecycle
* feat(NA): correct log rotation logic
* fix(NA): lifecycle for the log rotator
* test(NA): add a test case
* chore(NA): correctly add the new defaults to the config schema
* test(NA): change dir generation for test
* chore(NA): mock log rotate for logging service test
* test(NA): fix temp dir permission issue
* test(NA): try to fix test
* chore(NA): remove usage of mkdtemp
* refact(NA): feature logging rotation reimplementation in order to make it work across platforms
* fix(NA): bug on file size monitor handle
* fix(NA): remove wrong commented out code
* chore(NA): correctly identify if we should use polling
* chore(NA): fix some code comment
* refact(NA): minor implementation details
* chore(NA): change the order of logging mix
* test(NA): add some more test cases
* test(NA): add the majority of the test cases
* test(NA): add last test case
* test(NA): fallback conditions
* chore(NA): add logging rotate config keys to the docker image
* chore(NA): move logging.rotate.enable setting to enabled
* chore(NA): clarify documentation for logging rotate
* chore(NA): use regular instead of logWithMetadata
* chore(NA): move chokidar to a prod dep
* chore(NA): add log explaining why we had fallback to use polling
* test(NA): fix unit tests
* test(NA): fix unit tests
* chore(NA): correctly place this.running condition
* chore(NA): remove redundant call
* fix(NA): log filename containing numbers would produce invalid sorting
* chore(NA): remove existsSync function call from readRotatedFilesMetadata function
* chore(NA): Update docs/setup/settings.asciidoc
Co-Authored-By: Tyler Smalley <tylersmalley@me.com>
* chore(NA): Update docs/setup/settings.asciidoc
Co-Authored-By: Tyler Smalley <tylersmalley@me.com>
* chore(NA): Update docs/setup/settings.asciidoc
Co-Authored-By: Tyler Smalley <tylersmalley@me.com>
* chore(NA): Update docs/setup/settings.asciidoc
Co-Authored-By: Tyler Smalley <tylersmalley@me.com>
* chore(na): update src/legacy/server/logging/rotate/index.js
Co-Authored-By: Tyler Smalley <tylersmalley@me.com>
* chore(NA): remove unused config line from docker vars
* chore(NA): update documentation to include info about non exact limits
* chore(NA): remove redudant if clause
* fix(NA): correctly work with new keepFiles limit after start
* fix(NA): warning log for logging rotate
* chore(NA): replace logwithmetadate with log
* docs(NA): correct log to right terms
* docs(NA): add comment about usage of slice(-1)
* refact(NA): changing polling interval from seconds to milliseconds
* docs(NA): fix comments for shouldRotate method
* chore(NA): update src/legacy/server/logging/rotate/log_rotator.js
Co-Authored-By: Mikhail Shustov <restrry@gmail.com>
* chore(NA): update src/legacy/server/logging/rotate/log_rotator.js
Co-Authored-By: Mikhail Shustov <restrry@gmail.com>
* refact(NA): small change
* refact(NA): bound stop
* refact(NA): shouldUsePolling test function
* refact(NA): move named truncate function to delete
* refact(NA): typescript conversion
* chore(NA): type update for log rotation index file
* docs(NA): add experimental tag on docs
* chore(NA): add call protection of clearTimeout
* refact(NA): cleanup comments and wrong added logs plus inline config
* chore(NA): replace ts-ignore by non null assertion operator
* docs(NA): extend documentation for _renameRotatedFilesByOne call
* chore(NA): fix type problems for process.emit on nodejs
Ensure no deprecated Node.js core API's are used in Kibana. This is
achieved by throwing an error in either development mode or in CI if one
of the deprecated API's is called, and as such, new PR's should no
longer be able to be merged if they use deprecated API's.
Some of these API's (like the `Buffer` constructor`) is a security risk.
Instruments Kibana with Elastic APM by adding the Node.js agent to the
source code. The agent is not turned on by default but can be enabled by
setting the environment variable `ELASTIC_APM_ACTIVE=true` or by
creating an apm config file called `config/apm.dev.js` and setting
`active: true` inside of it.
This implementation is not meant to be used by end-users of Kibana as it
lacks integration with the regular Kibana config file. For now, this is
meant as a useful internal tool for Elastic employees when developing
Kibana.
By default, it's pre-configured with a `serverUrl` pointing to an APM
Server hosted on Elastic Cloud. The data is stored in an ES cluster
accessible only by Elastic employees. These defaults can easily be
overwritten using environment variables or via the custom config file.
* eui to 16.0.0
* type defs
* card click
* snapshot updates
* time format test updates
* ts return
* integration fix
* async
* more time format fixes
* more time format fixes
* test updates
* add uisettings dateformat timepicker test
* after method to clear setting
* [a11y] add initial accessibility functional tests
* add accessibility jobs
* fix config path
* remove percy setup from scripts
* disable color-contrast rule
* apply changes from @myasonik
* define aria-controls/owns props even when suggestions aren't visible
* [ftr/a11y] only throw error when there are errors
* adding tests for management page
* add a11y test for management page
* adding ignore rules' to a11y
* accessibility test for kibana home
* 7 passing tests, 0 failures
* jest snapshot update
* support a11y test in pipeline job
* update a11y test script for pipelines
* use oss compatible ci setup
* fix exclude syntax
* add default exclusion syntax
* Update dependency rxjs to ^6.5.3
* move argument type def up for better coverage
* adapt to possibly undefined helpExtension
* complete definition of deprecation$ type
* define types that bindNodeCallback can no longer infer
* define more types that bindNodeCallback can't infer
* be more explicit and accurate about the types for a subject/observable pair
* fix interface error, TS now identifies it
* ignore a return type flaw because types are not being managed properly
* avoid overspecifying types
* allow types to be inferred where possible
* remove unnecessary withLatestFrom()
* reduce number of rxjs versions installed
* update kbn/pm dist
* Update moment related packages
* unify moment version in yarn.lock
* adapt ro pluralization fixes
* update some bad pluralization in fixtures/snapshots
Originally added in https://github.com/elastic/kibana/pull/6791 as part
of custom notification banners, however it's no longer used.
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* Update dependency del to v5
* unify del/rimraf usage with del v5
* update yarn.lock
* update kbn-pm distributable
* remove poorly transformed code
* force some deletes from tmp
* mock less of the fs module
* force tmp deletion in a few more suites
* please make this the last force
* Update eslint related packages
* add errorMessage to no-restricted-paths validation
* add license to eslintrc file
* ignore broken plugin fixture
* upgrade tangled peer deps
* give name to unnamed func to avoid typescript-eslint/typescript-eslint#1078
* migrate away from removed prefer-interface
* migrate away from removed no-angle-bracket-type-assertions rule
* migrate away from removed no-triple-slash-reference rule
* old config was invalid and made this rule a noop
* fix array-type rule config
* fix readonly paramProperties that weren't being checked
* fix propType ordering
* remove references to non-existent rules
* remove unnecessary disable that is improperly formatted
* fix comment-related spacing
* fix typo/invalid namespace overrides
* rename fn to avoid hook-alike behavior
* remove reference to old removed rule
* use caret version for prettier
* reference babel-eslint with absolute path
This package is only being referenced in OSS Kibana, though it was
defined in X-Pack causing issues for OSS builds.
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* get coverage for console functional test
* instrument kibana
* collect coverage stats after each test, on url navigation, refresh and back
* switch to babel-plugin-istanbul
* switch to babel-plugin-istanbul
* [coverage service] basic version
* trigger final coverage flush when ftr finishes, wait for all logs before exiting
* add coverage report generation
* increase optimizer timeout, re-run idx/babel plugin before istanbul
* increase memory usage for node
* put istanbul preset in the beginning to run as the last one
* bump babel-plugin-istanbul up to 5.2.0
* cleanup
* save unique json files with coverage
* [functional test coverage] update coverage.json path
* run code coverage on CI
* increase max-old-space-size with env variable
* fix coverage folder creation
* use env variable to configure code coverage
* revert ci config changes
* remove duplicate plugin
* remove comments
* fixes
* refactor failed_tests_reporter to use TS, no octokit
* update renovate config
* ensure that all kbn-test files are in ts project
* fix some type errors
* add some more tests
* [kbn-test/githubapi] cleanup and document
* collect log messages as strings instead of message objects
* ensure issue is open when updating body
* improve readability of getKibanaIssues
* expose axios helpers from dev-utils
* fix request params for fetching github issues and validate locally
* include a README for failed_tests_reporter
* improve axios error helpers
* Add option for Internet Explorer IE11
* WIP trying to figure out IE options/capabilities
* more attempts to get IE tests working
* more work, but still can't set font size in Dev Tools Console
* two changes for IE
* revert skip in console test
* this change *appears* to set absolute times but they don't stick
* Shakespeare passing on all 3 browsers
* add config.ie.js, change 'internet explorer' to 'ie'
* increase notifications:lifetime so ew have a chance to see the message
* fix lint error remove unused Options
* updates from PR review, remove console.log
* cleanup + reuse existing code
* make iedriver path work for x-pack tests
* try to avoid changing notification timeout
* resolve path and add correct delimiter
* remove unused code, make timepicker work on IE11
* work-around 45333 for IE11
* [WIP] removing some work-arounds
* revert work-arounds
* cleanup
* remove debugging code
* remove debugging code
* removed unused code
* reverting 2 files that didn't have any material changes
* adds linter rule to disallow undeclared variables
* adds cypress eslint plugin, remove redundant packages from siem/package.json
* removes comment from json and adds a line about cypress linting to the cypress README
* adds upgraded package back to siem/package.json
* updates cypress run scripts since cypress package is now located in the x-pack/node_modules
* needed to yarn kbn bootstrap after rebasing with master
* use new setScreenshotSize
* change tolerance from 1% to 2% (originally 5%)
* retake baseline without notification dialog
* close add and save notifications
* wait for render complete when going in to FullScreen mode
* add 5 second sleep to see if it ever goes to full screen mode
* add debugging screenshots and sleeps
* try reloading the Kibana index before this test
* 30 iterations with only the first test enabled
* revert multi-run changes
* ran node scripts/build_renovate_config
* fix tslint errors
* fix tslint error
* update xpack dependency to match oss
* update yarn.lock
* revert notifications:lifetime:info change by reducing some other timeouts
* remove commented-out code
* fixed and Unskipped 2nd test
* re-arrange order of dashboard tests to pass :-(
* removed commented-out sleep
Hopefully this won't be an issue
* Add comment about the order of tests
```
loadTestFile(require.resolve('./view_edit'));
// Order of test suites *shouldn't* be important but there's a bug for the view_edit test above
// https://github.com/elastic/kibana/issues/46752
// The dashboard_snapshot test below requires the timestamped URL which breaks the view_edit test.
// If we don't use the timestamp in the URL, the colors in the charts will be different.
loadTestFile(require.resolve('./dashboard_snapshots'));
```
* Revert "Updating load-grunt-config to ^3.0.1 (#46408)"
This reverts commit 2733c093e0.
* adapt changes from #46408 to not invalidate yarn state on re-installs
* Update angular related packages
* upgrade jQuery too
* don't delete screenshots in pipeline jobs
* use ng-change so that listener is triggered after ng-model is updated
* match @types/angular versions
* update yarn.lock
* fix test
$routeChangeSuccess is no longer broadcast when resolving a redirect route, so this test has been adjusted to validate that
* Update jest related packages
* use correct type
* adapt spy and describe.each types
* update yarn.lock
* update snapshot
* define types before passing to describe.each
* Add core-only bundle
* Add ApplicationService mounting
* Add LegacyCore{Setup,Start}
* Fix PR comments
* Add functional tests
* Fix PR comments
* Fix PR comments
* Remove other usages of rootRoute
* Use state field notation
* Add support for open in new tab
* Fix PR comments
* Fix pesky await from the dead
* Update docs
* Bump @types/history