From 7ed1a580f85aa511c0749e8e207d9063c74e895b Mon Sep 17 00:00:00 2001 From: Volha Mardvilka Date: Thu, 4 Apr 2024 11:21:07 +0000 Subject: [PATCH 1/4] 331379891: (feat) disable connection settings when testrun is in progress --- modules/ui/src/app/app.component.html | 3 +++ modules/ui/src/app/app.component.spec.ts | 4 +-- .../settings/general-settings.component.html | 7 +++-- .../settings/general-settings.component.scss | 11 ++++++++ .../general-settings.component.spec.ts | 26 +++++++++++++++++++ .../settings/general-settings.component.ts | 18 +++++++++++++ modules/ui/src/styles.scss | 5 ++++ 7 files changed, 69 insertions(+), 5 deletions(-) diff --git a/modules/ui/src/app/app.component.html b/modules/ui/src/app/app.component.html index 9ea5c9e3f..b5ac707d8 100644 --- a/modules/ui/src/app/app.component.html +++ b/modules/ui/src/app/app.component.html @@ -179,6 +179,9 @@

Testrun

class="settings-drawer"> diff --git a/modules/ui/src/app/app.component.spec.ts b/modules/ui/src/app/app.component.spec.ts index 6b5477a48..c06358ccd 100644 --- a/modules/ui/src/app/app.component.spec.ts +++ b/modules/ui/src/app/app.component.spec.ts @@ -654,10 +654,8 @@ describe('AppComponent', () => { template: '
', }) class FakeGeneralSettingsComponent { - @Input() interfaces = []; - @Input() hasConnectionSettings = false; + @Input() settingsDisable = false; @Output() closeSettingEvent = new EventEmitter(); - @Output() reloadInterfacesEvent = new EventEmitter(); getSystemInterfaces = () => {}; } diff --git a/modules/ui/src/app/pages/settings/general-settings.component.html b/modules/ui/src/app/pages/settings/general-settings.component.html index 2e77950a6..7bdeb8dc8 100644 --- a/modules/ui/src/app/pages/settings/general-settings.component.html +++ b/modules/ui/src/app/pages/settings/general-settings.component.html @@ -25,6 +25,7 @@

System settings

+
System settings (keydown.enter)="reloadSetting()" (keydown.space)="reloadSetting()" role="button" - tabindex="0" + [tabindex]="settingsDisable ? -1 : 0" class="message-link"> Refresh @@ -105,7 +106,9 @@

System settings

class="save-button" color="primary" (click)="saveSetting()" - [disabled]="!isFormValues || vm.isLessThanOneInterface"> + [disabled]=" + !isFormValues || vm.isLessThanOneInterface || settingsDisable + "> Save
diff --git a/modules/ui/src/app/pages/settings/general-settings.component.scss b/modules/ui/src/app/pages/settings/general-settings.component.scss index c1f2e259c..e97c97d1e 100644 --- a/modules/ui/src/app/pages/settings/general-settings.component.scss +++ b/modules/ui/src/app/pages/settings/general-settings.component.scss @@ -119,3 +119,14 @@ } } } + +.settings-disabled-overlay { + position: absolute; + width: 100%; + left: 0; + right: 0; + top: 75px; + bottom: 45px; + background-color: rgba(255, 255, 255, 0.7); + z-index: 2; +} diff --git a/modules/ui/src/app/pages/settings/general-settings.component.spec.ts b/modules/ui/src/app/pages/settings/general-settings.component.spec.ts index 097cc2f0e..0187f2501 100644 --- a/modules/ui/src/app/pages/settings/general-settings.component.spec.ts +++ b/modules/ui/src/app/pages/settings/general-settings.component.spec.ts @@ -152,6 +152,32 @@ describe('GeneralSettingsComponent', () => { expect(mockSettingsStore.setDefaultFormValues).toHaveBeenCalled(); }); + + it('should disable setting form when get settingDisable as true ', () => { + spyOn(component.settingForm, 'disable'); + + component.settingsDisable = true; + + expect(component.settingForm.disable).toHaveBeenCalled(); + }); + + it('should enable setting form when get settingDisable as false ', () => { + spyOn(component.settingForm, 'enable'); + + component.settingsDisable = false; + + expect(component.settingForm.enable).toHaveBeenCalled(); + }); + + it('should disable "Save" button when get settingDisable as true', () => { + component.settingsDisable = true; + + const saveBtn = compiled.querySelector( + '.save-button' + ) as HTMLButtonElement; + + expect(saveBtn.disabled).toBeTrue(); + }); }); describe('#saveSetting', () => { diff --git a/modules/ui/src/app/pages/settings/general-settings.component.ts b/modules/ui/src/app/pages/settings/general-settings.component.ts index f9fe7eeeb..5ef2b4fc2 100644 --- a/modules/ui/src/app/pages/settings/general-settings.component.ts +++ b/modules/ui/src/app/pages/settings/general-settings.component.ts @@ -16,6 +16,7 @@ import { Component, EventEmitter, + Input, OnDestroy, OnInit, Output, @@ -39,6 +40,15 @@ import { LoaderService } from '../../services/loader.service'; }) export class GeneralSettingsComponent implements OnInit, OnDestroy { @Output() closeSettingEvent = new EventEmitter(); + + private isSettingsDisable = false; + get settingsDisable(): boolean { + return this.isSettingsDisable; + } + @Input() set settingsDisable(value: boolean) { + this.isSettingsDisable = value; + value ? this.disableSettings() : this.enableSettings(); + } public readonly CalloutType = CalloutType; public readonly EventType = EventType; public readonly FormKey = FormKey; @@ -111,6 +121,14 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy { } } + private disableSettings(): void { + this.settingForm.disable(); + } + + private enableSettings(): void { + this.settingForm.enable(); + } + private createSettingForm() { this.settingForm = this.fb.group( { diff --git a/modules/ui/src/styles.scss b/modules/ui/src/styles.scss index 2d3a36009..f6b9557ca 100644 --- a/modules/ui/src/styles.scss +++ b/modules/ui/src/styles.scss @@ -191,6 +191,11 @@ h2.title { --mdc-outlined-text-field-focus-label-text-color: #1a73e8; } +.setting-field { + --mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, 0.38); + --mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, 0.58); +} + body:has(.initiate-test-run-dialog) app-root app-spinner.connection-settings-spinner, From 6b2289e4ce020cfc3563aeb4efef50db3397ae80 Mon Sep 17 00:00:00 2001 From: Volha Mardvilka Date: Fri, 5 Apr 2024 08:51:53 +0000 Subject: [PATCH 2/4] 331379891: (fix) include more testrun results as progress --- modules/ui/src/app/app.component.html | 4 +- modules/ui/src/app/app.component.spec.ts | 1 + modules/ui/src/app/app.component.ts | 6 +++ .../app/pages/testrun/progress.component.html | 8 ++-- .../pages/testrun/progress.component.spec.ts | 5 +++ .../app/pages/testrun/progress.component.ts | 10 ++--- .../src/app/services/test-run.service.spec.ts | 37 ++++++++++++++++++- .../ui/src/app/services/test-run.service.ts | 9 +++++ 8 files changed, 66 insertions(+), 14 deletions(-) diff --git a/modules/ui/src/app/app.component.html b/modules/ui/src/app/app.component.html index b5ac707d8..969824523 100644 --- a/modules/ui/src/app/app.component.html +++ b/modules/ui/src/app/app.component.html @@ -179,9 +179,7 @@

Testrun

class="settings-drawer"> diff --git a/modules/ui/src/app/app.component.spec.ts b/modules/ui/src/app/app.component.spec.ts index c06358ccd..e108a96f9 100644 --- a/modules/ui/src/app/app.component.spec.ts +++ b/modules/ui/src/app/app.component.spec.ts @@ -93,6 +93,7 @@ describe('AppComponent', () => { 'setIsOpenStartTestrun', 'fetchDevices', 'getTestModules', + 'testrunInProgress', ]); mockFocusManagerService = jasmine.createSpyObj('mockFocusManagerService', [ diff --git a/modules/ui/src/app/app.component.ts b/modules/ui/src/app/app.component.ts index 6b0fe8f79..8b1e87cd0 100644 --- a/modules/ui/src/app/app.component.ts +++ b/modules/ui/src/app/app.component.ts @@ -32,6 +32,7 @@ import { import { appFeatureKey } from './store/reducers'; import { GeneralSettingsComponent } from './pages/settings/general-settings.component'; import { AppStore } from './app.store'; +import { TestRunService } from './services/test-run.service'; const DEVICES_LOGO_URL = '/assets/icons/devices.svg'; const DEVICES_RUN_URL = '/assets/icons/device_run.svg'; @@ -65,6 +66,7 @@ export class AppComponent { private store: Store, private state: State, private readonly focusManagerService: FocusManagerService, + private testRunService: TestRunService, public appStore: AppStore ) { this.appStore.getDevices(); @@ -147,4 +149,8 @@ export class AppComponent { consentShown() { this.appStore.setContent(); } + + isTestrunInProgress(status?: string) { + return this.testRunService.testrunInProgress(status); + } } diff --git a/modules/ui/src/app/pages/testrun/progress.component.html b/modules/ui/src/app/pages/testrun/progress.component.html index a2e17567c..26143cb58 100644 --- a/modules/ui/src/app/pages/testrun/progress.component.html +++ b/modules/ui/src/app/pages/testrun/progress.component.html @@ -17,7 +17,7 @@ }}