cloudscape-design / components

React components for Cloudscape Design System
https://cloudscape.design/
Apache License 2.0
2.3k stars 140 forks source link

feat: Emit table interaction latency metrics #2334

Closed connorlanigan closed 3 weeks ago

connorlanigan commented 4 weeks ago

Description

This PR adds functionality to measure the performance of tables when a user interacts with them.

Whenever a table enters a loading state, the time is measured until the table exits the loading state again. This is reported as the interactionTime in a metrics event. The last part of the table that the user interacted with (filter, pagination, preferences, sorting column) is reported as the userAction.

There is a field in the metrics API for including additional metadata about the user interaction (interactionMetadata), but it is not yet used.

Related links, issue #, if available: n/a

How has this been tested?

Added unit & integration tests, and tested manually on the new dev page.

Review checklist _The following items are to be evaluated by the author(s) and the reviewer(s)._ #### Correctness - _Changes include appropriate documentation updates._ - _Changes are backward-compatible if not indicated, see [`CONTRIBUTING.md`](https://github.com/cloudscape-design/components/blob/main/CONTRIBUTING.md#public-apis)._ - _Changes do not include unsupported browser features, see [`CONTRIBUTING.md`](https://github.com/cloudscape-design/components/blob/main/CONTRIBUTING.md#browsers-support)._ - _Changes were manually tested for accessibility, see [accessibility guidelines](https://cloudscape.design/foundation/core-principles/accessibility/)._ #### Security - _If the code handles URLs: all URLs are validated through [the `checkSafeUrl` function](https://github.com/cloudscape-design/components/blob/main/src/internal/utils/check-safe-url.ts)._ #### Testing - _Changes are covered with new/existing unit tests?_ - _Changes are covered with new/existing integration tests?_

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

codecov[bot] commented 4 weeks ago

Codecov Report

Attention: Patch coverage is 97.61905% with 1 line in your changes missing coverage. Please review.

Project coverage is 95.48%. Comparing base (da7e1c1) to head (48db024). Report is 4 commits behind head on main.

Files Patch % Lines
src/table/internal.tsx 80.00% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #2334 +/- ## ======================================= Coverage 95.48% 95.48% ======================================= Files 706 706 Lines 18808 18867 +59 Branches 6309 6333 +24 ======================================= + Hits 17958 18015 +57 + Misses 842 798 -44 - Partials 8 54 +46 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

just-boris commented 3 weeks ago

I think passing coverage threshold is still needed, so waiting for more changes 👀