chore(ui): throttle tree updates (#21578)

This commit is contained in:
Pavel Feldman 2023-03-10 17:01:19 -08:00 committed by GitHub
parent e45a496850
commit 34efbea4c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -357,6 +357,22 @@ declare global {
let receiver: TeleReporterReceiver | undefined; let receiver: TeleReporterReceiver | undefined;
let throttleTimer: NodeJS.Timeout | undefined;
let throttleData: { rootSuite: Suite, progress: Progress } | undefined;
const throttledAction = () => {
clearTimeout(throttleTimer);
throttleTimer = undefined;
updateRootSuite(throttleData!.rootSuite, throttleData!.progress);
};
const throttleUpdateRootSuite = (rootSuite: Suite, progress: Progress, immediate = false) => {
throttleData = { rootSuite, progress };
if (immediate)
throttledAction();
else if (!throttleTimer)
throttleTimer = setTimeout(throttledAction, 250);
};
const refreshRootSuite = (eraseResults: boolean) => { const refreshRootSuite = (eraseResults: boolean) => {
if (!eraseResults) { if (!eraseResults) {
sendMessageNoReply('list'); sendMessageNoReply('list');
@ -378,11 +394,15 @@ const refreshRootSuite = (eraseResults: boolean) => {
progress.passed = 0; progress.passed = 0;
progress.failed = 0; progress.failed = 0;
progress.skipped = 0; progress.skipped = 0;
updateRootSuite(rootSuite, progress); throttleUpdateRootSuite(rootSuite, progress, true);
},
onEnd: () => {
throttleUpdateRootSuite(rootSuite, progress, true);
}, },
onTestBegin: () => { onTestBegin: () => {
updateRootSuite(rootSuite, progress); throttleUpdateRootSuite(rootSuite, progress);
}, },
onTestEnd: (test: TestCase) => { onTestEnd: (test: TestCase) => {
@ -392,7 +412,7 @@ const refreshRootSuite = (eraseResults: boolean) => {
++progress.failed; ++progress.failed;
else else
++progress.passed; ++progress.passed;
updateRootSuite(rootSuite, progress); throttleUpdateRootSuite(rootSuite, progress);
// This will update selected trace viewer. // This will update selected trace viewer.
updateStepsProgress(); updateStepsProgress();
}, },