Skip to content

Commit

Permalink
Removing Redundant Calls for PoA
Browse files Browse the repository at this point in the history
  • Loading branch information
Amit3200 committed Oct 26, 2023
1 parent 9dc3b46 commit 606d162
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 25 deletions.
26 changes: 12 additions & 14 deletions packages/webdriver-utils/src/driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ export default class Driver {
this.passedCapabilities = passedCapabilities;
}

static requestPostOptions(command) {
return {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(command)
};
}

async getCapabilites() {
return await Cache.withCache(Cache.caps, this.sessionId, async () => {
try {
Expand Down Expand Up @@ -43,13 +53,7 @@ export default class Driver {
if (!command.script.includes('browserstack_executor')) {
command.script = `/* percy_automate_script */ \n ${command.script}`;
}
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(command)
};
const options = Driver.requestPostOptions(command);
const baseUrl = `${this.executorUrl}/session/${this.sessionId}/execute/sync`;
const response = JSON.parse((await request(baseUrl, options)).body);
return response;
Expand All @@ -68,13 +72,7 @@ export default class Driver {
}

async findElement(using, value) {
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify({ using, value })
};
const options = Driver.requestPostOptions({ using, value });
const baseUrl = `${this.executorUrl}/session/${this.sessionId}/element`;
const response = JSON.parse((await request(baseUrl, options)).body);
return response.value;
Expand Down
1 change: 1 addition & 0 deletions packages/webdriver-utils/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export default class WebdriverUtils {
const comparisonData = await automate.screenshot(snapshotName, options);
comparisonData.metadata.cliScreenshotStartTime = startTime;
comparisonData.metadata.cliScreenshotEndTime = Date.now();
log.debug(`[${snapshotName}] : Comparison Data: ${JSON.stringify(comparisonData)}`);
return comparisonData;
} catch (e) {
log.error(`[${snapshotName}] : Error - ${e.message}`);
Expand Down
2 changes: 1 addition & 1 deletion packages/webdriver-utils/src/metadata/desktopMetaData.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export default class DesktopMetaData {

async screenResolution() {
return await Cache.withCache(Cache.resolution, this.driver.sessionId, async () => {
const data = await this.driver.executeScript({ script: 'return [(window.screen.width * window.devicePixelRatio).toString(), (window.screen.height * window.devicePixelRatio).toString()];', args: [] });
const data = await this.driver.executeScript({ script: 'return [parseInt(window.screen.width * window.devicePixelRatio).toString(), parseInt(window.screen.height * window.devicePixelRatio).toString()];', args: [] });
const screenInfo = data.value;
return `${screenInfo[0]} x ${screenInfo[1]}`;
});
Expand Down
4 changes: 0 additions & 4 deletions packages/webdriver-utils/src/providers/automateProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,10 +187,6 @@ export default class AutomateProvider extends GenericProvider {
const resolution = await this.metaData.screenResolution();
const orientation = (this.metaData.orientation() || automateCaps.deviceOrientation)?.toLowerCase();

// for android window size only constitutes of browser viewport, hence adding nav / status / url bar heights
[this.header, this.footer] = await this.getHeaderFooter(deviceName, osVersion, browserName);
height = this.metaData.device() && osName?.toLowerCase() === 'android' ? height + this.header + this.footer : height;

return {
name: deviceName,
osName,
Expand Down
14 changes: 14 additions & 0 deletions packages/webdriver-utils/test/driver.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,4 +161,18 @@ describe('Driver', () => {
expect(res).toEqual('mockVal');
});
});

describe('requestPostOptions', () => {
const command = { simple: 'test' };
const expectedResponse = {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(command)
};
it('returns post options', () => {
expect(Driver.requestPostOptions(command)).toEqual(expectedResponse);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ describe('DesktopMetaData', () => {
screenInfo = await desktopMetaData.screenResolution();
expect(screenInfo).toEqual('1980 x 1080');
expect(executeScriptSpy)
.toHaveBeenCalledWith({ script: 'return [(window.screen.width * window.devicePixelRatio).toString(), (window.screen.height * window.devicePixelRatio).toString()];', args: [] });
.toHaveBeenCalledWith({ script: 'return [parseInt(window.screen.width * window.devicePixelRatio).toString(), parseInt(window.screen.height * window.devicePixelRatio).toString()];', args: [] });
});
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,6 @@ describe('AutomateProvider', () => {
let windowSizeSpy;
let orientationSpy;
let resolutionSpy;
let getHeaderFooterSpy;
let percyBuildInfo = {
id: '123',
url: 'https://percy.io/abc/123'
Expand All @@ -256,7 +255,6 @@ describe('AutomateProvider', () => {
percyScreenshotBeginSpy = spyOn(AutomateProvider.prototype,
'percyScreenshotBegin').and.returnValue({ value: '{"buildHash":"12e3","sessionHash":"abc1d","capabilities":{"browserName":"chrome","browserVersion":"113.0","os":"win11","os_version":"11","deviceOrientation":false,"resolution":["1920","1080"]},"success":true,"deviceName":"x.x.x.x"}' });
spyOn(Driver.prototype, 'getCapabilites');
getHeaderFooterSpy = spyOn(GenericProvider.prototype, 'getHeaderFooter').and.returnValue(Promise.resolve([0, 0]));
windowSizeSpy = spyOn(DesktopMetaData.prototype, 'windowSize')
.and.returnValue(Promise.resolve({ width: 1000, height: 1000 }));
resolutionSpy = spyOn(DesktopMetaData.prototype, 'screenResolution')
Expand All @@ -275,7 +273,6 @@ describe('AutomateProvider', () => {
expect(windowSizeSpy).toHaveBeenCalledTimes(1);
expect(resolutionSpy).toHaveBeenCalledTimes(1);
expect(orientationSpy).toHaveBeenCalledTimes(1);
expect(getHeaderFooterSpy).toHaveBeenCalledTimes(1);
expect(res).toEqual({
name: 'Windows_11_chrome_113',
osName: 'Windows',
Expand All @@ -296,7 +293,6 @@ describe('AutomateProvider', () => {
percyScreenshotBeginSpy = spyOn(AutomateProvider.prototype,
'percyScreenshotBegin').and.returnValue({ value: '{"buildHash":"12e3","sessionHash":"abc1d","capabilities":{"browserName":"chrome_android","browserVersion":"chrome_android","os":"android","os_version":"11","deviceOrientation":"portrait","resolution":["1920","1080"]},"success":true,"deviceName":"Samsung Galaxy S21"}' });
spyOn(Driver.prototype, 'getCapabilites');
getHeaderFooterSpy = spyOn(GenericProvider.prototype, 'getHeaderFooter').and.returnValue(Promise.resolve([0, 0]));
windowSizeSpy = spyOn(MobileMetaData.prototype, 'windowSize')
.and.returnValue(Promise.resolve({ width: 1000, height: 1000 }));
resolutionSpy = spyOn(MobileMetaData.prototype, 'screenResolution')
Expand All @@ -315,7 +311,6 @@ describe('AutomateProvider', () => {
expect(windowSizeSpy).toHaveBeenCalledTimes(1);
expect(resolutionSpy).toHaveBeenCalledTimes(1);
expect(orientationSpy).toHaveBeenCalledTimes(1);
expect(getHeaderFooterSpy).toHaveBeenCalledTimes(1);
expect(res).toEqual({
name: 'Samsung Galaxy S21',
osName: 'Android',
Expand Down

0 comments on commit 606d162

Please sign in to comment.