Skip to content

Commit 7f788d4

Browse files
add typescript definitions
1 parent a9d078c commit 7f788d4

File tree

1 file changed

+259
-0
lines changed

1 file changed

+259
-0
lines changed

index.d.ts

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
declare module 'testingbot-api' {
2+
export interface TestingBotOptions {
3+
api_key?: string;
4+
api_secret?: string;
5+
debug?: boolean;
6+
retries?: number;
7+
retryDelay?: number;
8+
}
9+
10+
export interface Browser {
11+
browserName: string;
12+
version?: string;
13+
platform?: string;
14+
os?: string;
15+
}
16+
17+
export interface Device {
18+
id: string;
19+
name: string;
20+
platform: string;
21+
version: string;
22+
available: boolean;
23+
}
24+
25+
export interface SessionOptions {
26+
capabilities: {
27+
browserName: string;
28+
browserVersion?: string;
29+
platform?: string;
30+
[key: string]: any;
31+
};
32+
}
33+
34+
export interface SessionResponse {
35+
session_id: string;
36+
cdp_url: string;
37+
}
38+
39+
export interface Test {
40+
session_id: string;
41+
status: string;
42+
browser: string;
43+
version: string;
44+
platform: string;
45+
duration: number;
46+
created_at: string;
47+
[key: string]: any;
48+
}
49+
50+
export interface TestUpdate {
51+
'test[success]'?: '0' | '1';
52+
'test[status_message]'?: string;
53+
'test[name]'?: string;
54+
'test[extra]'?: string;
55+
[key: string]: any;
56+
}
57+
58+
export interface Build {
59+
id: number;
60+
name: string;
61+
tests: number;
62+
created_at: string;
63+
[key: string]: any;
64+
}
65+
66+
export interface UserInfo {
67+
first_name: string;
68+
last_name: string;
69+
email: string;
70+
[key: string]: any;
71+
}
72+
73+
export interface UserUpdate {
74+
'user[first_name]'?: string;
75+
'user[last_name]'?: string;
76+
'user[email]'?: string;
77+
[key: string]: any;
78+
}
79+
80+
export interface ScreenshotOptions {
81+
url: string;
82+
browsers: Array<{
83+
browserName: string;
84+
version?: string;
85+
os?: string;
86+
}>;
87+
resolution: string;
88+
waitTime?: number;
89+
fullPage?: boolean;
90+
callbackURL?: string;
91+
}
92+
93+
export interface Screenshot {
94+
id: string;
95+
url: string;
96+
screenshots: Array<{
97+
browser: string;
98+
version: string;
99+
os: string;
100+
image_url: string;
101+
thumb_url: string;
102+
}>;
103+
[key: string]: any;
104+
}
105+
106+
export interface Tunnel {
107+
id: string;
108+
state: string;
109+
metadata?: any;
110+
[key: string]: any;
111+
}
112+
113+
export interface TeamUser {
114+
id: number;
115+
first_name: string;
116+
last_name: string;
117+
email: string;
118+
role: string;
119+
[key: string]: any;
120+
}
121+
122+
export type Callback<T = any> = (error: Error | null, data?: T) => void;
123+
124+
export class TestingBot {
125+
constructor(options?: TestingBotOptions);
126+
127+
// Browser & Device Management
128+
getBrowsers(): Promise<Browser[]>;
129+
getBrowsers(type: 'web' | 'mobile'): Promise<Browser[]>;
130+
getBrowsers(callback: Callback<Browser[]>): void;
131+
getBrowsers(type: 'web' | 'mobile', callback: Callback<Browser[]>): void;
132+
133+
getDevices(): Promise<Device[]>;
134+
getDevices(callback: Callback<Device[]>): void;
135+
136+
getAvailableDevices(): Promise<Device[]>;
137+
getAvailableDevices(callback: Callback<Device[]>): void;
138+
139+
getDevice(deviceId: string): Promise<Device>;
140+
getDevice(deviceId: string, callback: Callback<Device>): void;
141+
142+
// Session Management
143+
createSession(options: SessionOptions): Promise<SessionResponse>;
144+
createSession(options: SessionOptions, callback: Callback<SessionResponse>): void;
145+
146+
// User Management
147+
getUserInfo(): Promise<UserInfo>;
148+
getUserInfo(callback: Callback<UserInfo>): void;
149+
150+
updateUserInfo(userData: UserUpdate): Promise<UserInfo>;
151+
updateUserInfo(userData: UserUpdate, callback: Callback<UserInfo>): void;
152+
153+
// Test Management
154+
getTests(): Promise<Test[]>;
155+
getTests(offset: number, limit: number): Promise<Test[]>;
156+
getTests(callback: Callback<Test[]>): void;
157+
getTests(offset: number, limit: number, callback: Callback<Test[]>): void;
158+
159+
getTestDetails(sessionId: string): Promise<Test>;
160+
getTestDetails(sessionId: string, callback: Callback<Test>): void;
161+
162+
updateTest(testData: TestUpdate, sessionId: string): Promise<Test>;
163+
updateTest(testData: TestUpdate, sessionId: string, callback: Callback<Test>): void;
164+
165+
deleteTest(sessionId: string): Promise<boolean>;
166+
deleteTest(sessionId: string, callback: Callback<boolean>): void;
167+
168+
stopTest(sessionId: string): Promise<boolean>;
169+
stopTest(sessionId: string, callback: Callback<boolean>): void;
170+
171+
// Tunnel Management
172+
getTunnelList(): Promise<Tunnel[]>;
173+
getTunnelList(callback: Callback<Tunnel[]>): void;
174+
175+
deleteTunnel(tunnelId: string): Promise<boolean>;
176+
deleteTunnel(tunnelId: string, callback: Callback<boolean>): void;
177+
178+
// Build Management
179+
getBuilds(): Promise<Build[]>;
180+
getBuilds(offset: number, limit: number): Promise<Build[]>;
181+
getBuilds(callback: Callback<Build[]>): void;
182+
getBuilds(offset: number, limit: number, callback: Callback<Build[]>): void;
183+
184+
getTestsForBuild(buildId: string | number): Promise<Test[]>;
185+
getTestsForBuild(buildId: string | number, callback: Callback<Test[]>): void;
186+
187+
deleteBuild(buildId: string | number): Promise<boolean>;
188+
deleteBuild(buildId: string | number, callback: Callback<boolean>): void;
189+
190+
// Storage Management
191+
uploadFile(filePath: string): Promise<string>;
192+
uploadFile(filePath: string, callback: Callback<string>): void;
193+
194+
uploadRemoteFile(fileUrl: string): Promise<string>;
195+
uploadRemoteFile(fileUrl: string, callback: Callback<string>): void;
196+
197+
getStorageFile(appUrl: string): Promise<any>;
198+
getStorageFile(appUrl: string, callback: Callback<any>): void;
199+
200+
getStorageFiles(): Promise<any[]>;
201+
getStorageFiles(offset: number, limit: number): Promise<any[]>;
202+
getStorageFiles(callback: Callback<any[]>): void;
203+
getStorageFiles(offset: number, limit: number, callback: Callback<any[]>): void;
204+
205+
deleteStorageFile(appUrl: string): Promise<boolean>;
206+
deleteStorageFile(appUrl: string, callback: Callback<boolean>): void;
207+
208+
// Screenshots
209+
takeScreenshot(
210+
url: string,
211+
browsers: ScreenshotOptions['browsers'],
212+
resolution: string,
213+
waitTime?: number,
214+
fullPage?: boolean,
215+
callbackURL?: string
216+
): Promise<Screenshot>;
217+
takeScreenshot(
218+
url: string,
219+
browsers: ScreenshotOptions['browsers'],
220+
resolution: string,
221+
waitTime: number,
222+
fullPage: boolean,
223+
callbackURL: string,
224+
callback: Callback<Screenshot>
225+
): void;
226+
227+
retrieveScreenshots(screenshotId: string): Promise<Screenshot>;
228+
retrieveScreenshots(screenshotId: string, callback: Callback<Screenshot>): void;
229+
230+
getScreenshotList(): Promise<Screenshot[]>;
231+
getScreenshotList(offset: number, limit: number): Promise<Screenshot[]>;
232+
getScreenshotList(callback: Callback<Screenshot[]>): void;
233+
getScreenshotList(offset: number, limit: number, callback: Callback<Screenshot[]>): void;
234+
235+
// Team Management
236+
getTeam(): Promise<any>;
237+
getTeam(callback: Callback<any>): void;
238+
239+
getUsersInTeam(): Promise<TeamUser[]>;
240+
getUsersInTeam(callback: Callback<TeamUser[]>): void;
241+
242+
getUserFromTeam(userId: string | number): Promise<TeamUser>;
243+
getUserFromTeam(userId: string | number, callback: Callback<TeamUser>): void;
244+
245+
createUserInTeam(userData: UserUpdate): Promise<TeamUser>;
246+
createUserInTeam(userData: UserUpdate, callback: Callback<TeamUser>): void;
247+
248+
updateUserInTeam(userId: string | number, userData: UserUpdate): Promise<TeamUser>;
249+
updateUserInTeam(userId: string | number, userData: UserUpdate, callback: Callback<TeamUser>): void;
250+
251+
resetCredentials(userId: string | number): Promise<any>;
252+
resetCredentials(userId: string | number, callback: Callback<any>): void;
253+
254+
// Utility
255+
getAuthenticationHashForSharing(sessionId: string): string;
256+
}
257+
258+
export default TestingBot;
259+
}

0 commit comments

Comments
 (0)