mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
## 📓 Summary
The PR implements some utilities into the `browser` service to allow
controlling the network conditions during the execution of a functional
test.
### `getNetworkConditions`
Returns the current network simulation options. If none conditions are
previously set, it returns `undefined`
**N.B.**: _if the testing environment is not a Chromium browser, it
throws an error that can be easily caught to manually skip the test or
handle a fallback scenario._
```ts
it('should display a loading skeleton while loading', async function () {
// Skip the test in case network condition utils are not available
try {
const networkConditions = await browser.getNetworkConditions(); // undefined
await browser.setNetworkConditions('SLOW_3G');
const networkConditions = await browser.getNetworkConditions();
// {
// offline: false,
// latency: 2000,
// download_throughput: 50000,
// upload_throughput: 50000,
// }
} catch (error) {
this.skip();
}
});
```
### `setNetworkConditions`
Set the desired network conditions.
It supports different presets that match the [network profiles provided
by Chrome
debugger](
|
||
---|---|---|
.. | ||
plugins | ||
services | ||
tests | ||
config.ts | ||
README.md |
FTR tests for the core.analytics
service
This suite allows us to test the event-based telemetry client provided by the core.analytics
service.
How to add my own tests
Implement your own tests in the tests/instrumented_events/(from_the_browser|from_the_server)/
directory and list it in the tests/instrumented_events/(from_the_browser|from_the_server)/index.ts
file.
There are 2 FTR helpers to allow you to retrieve the generated events:
- For events generated in the UI, you can use
kibana_ebt_ui
to retrieve the events. - For events generated in the server, you can use the
kibana_ebt_server
helper.
The API is the same for both of them:
// To retrieve 2 events of type "my-event-type"
const events = await getService('kibana_ebt_ui').getEvents(2, { eventTypes: ['my-event-type'] });
expect(events).to...
If you are reusing these helpers in another suite, please remember to make sure to optIn via await getService('kibana_ebt_ui').setOptIn(true);
Refer to EBTHelpersContract
for more details about the existing APIs and all the options they accept.