Skip to content

Commit d25c6c4

Browse files
committed
more api cleanup
1 parent 9da0f47 commit d25c6c4

1 file changed

Lines changed: 42 additions & 13 deletions

File tree

test/smoke/src/spectron/client.ts

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ export interface APIElement {
1414

1515
export interface Driver {
1616
keys(keys: string[]): Promise<void>;
17+
click(selector: string, xoffset?: number, yoffset?: number): Promise<any>;
18+
doubleClick(selector: string): Promise<any>;
19+
move(selector: string): Promise<any>;
20+
setValue(selector: string, text: string): Promise<void>;
21+
getTitle(): Promise<string>;
22+
23+
isActiveElement(selector: string): Promise<boolean>;
1724
getElements(selector: string): Promise<APIElement[]>;
1825
}
1926

@@ -26,6 +33,31 @@ export class SpectronDriver implements Driver {
2633
return Promise.resolve();
2734
}
2835

36+
async click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): Promise<void> {
37+
await this.spectronClient.leftClick(selector, xoffset, yoffset);
38+
}
39+
40+
async doubleClick(selector: string): Promise<void> {
41+
await this.spectronClient.doubleClick(selector);
42+
}
43+
44+
async move(selector: string): Promise<void> {
45+
await this.spectronClient.moveToObject(selector);
46+
}
47+
48+
async setValue(selector: string, text: string): Promise<void> {
49+
await this.spectronClient.setValue(selector, text);
50+
}
51+
52+
async getTitle(): Promise<string> {
53+
return await this.spectronClient.getTitle();
54+
}
55+
56+
async isActiveElement(selector: string): Promise<boolean> {
57+
const result = await (this.spectronClient.execute(s => document.activeElement.matches(s), selector) as any as Promise<{ value: boolean; }>);
58+
return result.value;
59+
}
60+
2961
async getElements(selector: string): Promise<APIElement[]> {
3062
const result = await (this.spectronClient.execute(selector => {
3163
const query = document.querySelectorAll(selector);
@@ -75,28 +107,29 @@ export class API {
75107
}
76108

77109
async waitAndClick(selector: string, xoffset?: number, yoffset?: number): Promise<any> {
78-
return this.waitFor(() => this.spectronClient.leftClick(selector, xoffset, yoffset), void 0, `click with selector ${selector}`);
110+
return this.waitFor(() => this.driver.click(selector, xoffset, yoffset), () => true, `click with selector ${selector}`);
79111
}
80112

81113
async waitAndDoubleClick(selector: string, capture: boolean = true): Promise<any> {
82-
return this.waitFor(() => this.spectronClient.doubleClick(selector), void 0, `doubleClick with selector ${selector}`);
114+
return this.waitFor(() => this.driver.doubleClick(selector), () => true, `doubleClick with selector ${selector}`);
83115
}
84116

85117
async waitAndMove(selector: string): Promise<any> {
86-
return this.waitFor(() => this.spectronClient.moveToObject(selector), void 0, `move to object with selector ${selector}`);
118+
return this.waitFor(() => this.driver.move(selector), () => true, `move to object with selector ${selector}`);
87119
}
88120

89121
async setValue(selector: string, text: string, capture: boolean = true): Promise<any> {
90-
return this.spectronClient.setValue(selector, text);
122+
return this.driver.setValue(selector, text);
91123
}
92124

93125
async doesElementExist(selector: string): Promise<boolean> {
94-
return this.spectronClient.element(selector).then(result => !!result.value);
126+
const elements = await this.driver.getElements(selector);
127+
return elements.length > 0;
95128
}
96129

97130
async getElementCount(selector: string): Promise<number> {
98-
const result = await this.spectronClient.elements(selector);
99-
return result.value.length;
131+
const elements = await this.driver.getElements(selector);
132+
return elements.length;
100133
}
101134

102135
async waitForElements(selector: string, accept: (result: APIElement[]) => boolean = result => result.length > 0): Promise<APIElement[]> {
@@ -108,15 +141,11 @@ export class API {
108141
}
109142

110143
async waitForActiveElement(selector: string): Promise<any> {
111-
return this.waitFor(
112-
() => this.spectronClient.execute(s => document.activeElement.matches(s), selector),
113-
r => r.value,
114-
`wait for active element: ${selector}`
115-
);
144+
return this.waitFor(() => this.driver.isActiveElement(selector), undefined, `wait for active element: ${selector}`);
116145
}
117146

118147
async getTitle(): Promise<string> {
119-
return this.spectronClient.getTitle();
148+
return this.driver.getTitle();
120149
}
121150

122151
selectorExecute<P>(

0 commit comments

Comments
 (0)