Improve script error dialogs #304
- Include the script's directory path #304. - Exclude Windows-specific instructions on non-Windows OS. - Standardize language across dialogs for consistency. Other supporting changes: - Add script diagnostics data collection from main process. - Document script file storage and execution tamper protection in SECURITY.md. - Remove redundant comment in `NodeReadbackFileWriter`. - Centralize error display for uniformity and simplicity. - Simpify `WindowVariablesValidator` to omit checks when not on the renderer process. - Improve and centralize Electron environment detection. - Use more emphatic language (don't worry) in error messages.
This commit is contained in:
26
tests/unit/shared/Stubs/ElectronEnvironmentDetectorStub.ts
Normal file
26
tests/unit/shared/Stubs/ElectronEnvironmentDetectorStub.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { ElectronEnvironmentDetector, ElectronProcessType } from '@/infrastructure/RuntimeEnvironment/Electron/ElectronEnvironmentDetector';
|
||||
|
||||
export class ElectronEnvironmentDetectorStub implements ElectronEnvironmentDetector {
|
||||
private isInsideElectron = true;
|
||||
|
||||
public process: ElectronProcessType = 'renderer';
|
||||
|
||||
public isRunningInsideElectron(): boolean {
|
||||
return this.isInsideElectron;
|
||||
}
|
||||
|
||||
public determineElectronProcessType(): ElectronProcessType {
|
||||
return this.process;
|
||||
}
|
||||
|
||||
public withNonElectronEnvironment(): this {
|
||||
this.isInsideElectron = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withElectronEnvironment(process: ElectronProcessType): this {
|
||||
this.isInsideElectron = true;
|
||||
this.process = process;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
25
tests/unit/shared/Stubs/ScriptDiagnosticsCollectorStub.ts
Normal file
25
tests/unit/shared/Stubs/ScriptDiagnosticsCollectorStub.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { ScriptDiagnosticData, ScriptDiagnosticsCollector } from '@/application/ScriptDiagnostics/ScriptDiagnosticsCollector';
|
||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||
|
||||
export class ScriptDiagnosticsCollectorStub implements ScriptDiagnosticsCollector {
|
||||
private operatingSystem: OperatingSystem | undefined = OperatingSystem.Windows;
|
||||
|
||||
private scriptDirectoryPath: string | undefined = '/test/scripts/directory/path';
|
||||
|
||||
public withOperatingSystem(operatingSystem: OperatingSystem | undefined): this {
|
||||
this.operatingSystem = operatingSystem;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withScriptDirectoryPath(scriptDirectoryPath: string | undefined): this {
|
||||
this.scriptDirectoryPath = scriptDirectoryPath;
|
||||
return this;
|
||||
}
|
||||
|
||||
public collectDiagnosticInformation(): Promise<ScriptDiagnosticData> {
|
||||
return Promise.resolve({
|
||||
scriptsDirectoryAbsolutePath: this.scriptDirectoryPath,
|
||||
currentOperatingSystem: this.operatingSystem,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@ import { Logger } from '@/application/Common/Log/Logger';
|
||||
import { WindowVariables } from '@/infrastructure/WindowVariables/WindowVariables';
|
||||
import { CodeRunner } from '@/application/CodeRunner/CodeRunner';
|
||||
import { Dialog } from '@/presentation/common/Dialog';
|
||||
import { ScriptDiagnosticsCollector } from '@/application/ScriptDiagnostics/ScriptDiagnosticsCollector';
|
||||
import { LoggerStub } from './LoggerStub';
|
||||
import { CodeRunnerStub } from './CodeRunnerStub';
|
||||
import { DialogStub } from './DialogStub';
|
||||
import { ScriptDiagnosticsCollectorStub } from './ScriptDiagnosticsCollectorStub';
|
||||
|
||||
export class WindowVariablesStub implements WindowVariables {
|
||||
public codeRunner?: CodeRunner = new CodeRunnerStub();
|
||||
@@ -18,6 +20,16 @@ export class WindowVariablesStub implements WindowVariables {
|
||||
|
||||
public dialog?: Dialog = new DialogStub();
|
||||
|
||||
public scriptDiagnosticsCollector?
|
||||
: ScriptDiagnosticsCollector = new ScriptDiagnosticsCollectorStub();
|
||||
|
||||
public withScriptDiagnosticsCollector(
|
||||
scriptDiagnosticsCollector: ScriptDiagnosticsCollector,
|
||||
): this {
|
||||
this.scriptDiagnosticsCollector = scriptDiagnosticsCollector;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withLog(log: Logger): this {
|
||||
this.log = log;
|
||||
return this;
|
||||
|
||||
Reference in New Issue
Block a user