Files
ChannelTests-TS/test/config/TestConfiguration.ts
Alexander Zinn 4b672f231f Add command line parsing and configuration management
* Introduced `CommandLine` class for handling command line options and arguments
* Added `TestConfiguration` class to manage application credentials and URIs
* Implemented example usage for generating command line arguments from a configuration object
* Updated `package.json` to include `commander` dependency
* Removed unused `TestRunner` class and created a new `TestRunner` for executing tests with command line options
* Adjusted logging level type to use lowercase values for consistency
2025-08-18 17:54:04 -04:00

78 lines
2.0 KiB
TypeScript

import CommandLine, { CommandLineOptions } from './CommandLine';
type ApplicationCredentials = {
applicationId: string;
secret: string;
}
type Uri = {
pcast: string;
ingest: string | undefined;
channel: string | undefined;
publisher: string | undefined;
}
type BrowserstackConfiguration = {
enabled: boolean;
local: boolean;
user: string;
key: string;
}
export default class TestConfiguration {
private readonly _applicationCredentials: ApplicationCredentials;
private readonly _uri: Uri;
private readonly _viewers: string[];
private readonly _publishers: string[];
private readonly _tests: string[];
private readonly _browserstack: BrowserstackConfiguration;
constructor(commandLineOptions: CommandLineOptions) {
this._applicationCredentials = {
applicationId: commandLineOptions.applicationId,
secret: commandLineOptions.secret,
};
this._uri = {
pcast: commandLineOptions.pcastUri,
ingest: commandLineOptions.ingestUri,
channel: commandLineOptions.channelUri,
publisher: commandLineOptions.publisherUri,
};
this._viewers = commandLineOptions.viewers;
this._publishers = commandLineOptions.publishers;
this._tests = commandLineOptions.tests;
this._browserstack = {
enabled: commandLineOptions.useBrowserstack,
local: commandLineOptions.useBrowserstackLocal,
user: commandLineOptions.browserstackUser,
key: commandLineOptions.browserstackKey,
};
}
get applicationCredentials(): ApplicationCredentials {
return this._applicationCredentials;
}
get uri(): Uri {
return this._uri;
}
get viewers(): string[] {
return this._viewers;
}
get publishers(): string[] {
return this._publishers;
}
get tests(): string[] {
return this._tests;
}
get browserstack(): BrowserstackConfiguration {
return this._browserstack;
}
}