fix(adb): force page scale factor update on connection (#4755)

This commit is contained in:
Pavel Feldman 2020-12-17 18:28:49 -08:00 committed by GitHub
parent a721ba5a8a
commit 774eb53980
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 30 additions and 10 deletions

View file

@ -31,7 +31,7 @@ export interface AndroidDevice<BrowserContextOptions, BrowserContext, Page> exte
open(command: string): Promise<AndroidSocket>;
installApk(file: string | Buffer, options?: { args?: string[] }): Promise<void>;
push(file: string | Buffer, path: string, options?: { mode?: number }): Promise<void>;
launchBrowser(options?: BrowserContextOptions & { packageName?: string }): Promise<BrowserContext>;
launchBrowser(options?: BrowserContextOptions & { pkg?: string }): Promise<BrowserContext>;
close(): Promise<void>;
wait(selector: AndroidSelector, options?: { state?: 'gone' } & { timeout?: number }): Promise<void>;

View file

@ -233,7 +233,7 @@ export class AndroidDevice extends ChannelOwner<channels.AndroidDeviceChannel, c
});
}
async launchBrowser(options: types.BrowserContextOptions & { packageName?: string } = {}): Promise<BrowserContext> {
async launchBrowser(options: types.BrowserContextOptions & { pkg?: string } = {}): Promise<BrowserContext> {
return this._wrapApiCall('androidDevice.launchBrowser', async () => {
const contextOptions = await prepareBrowserContextOptions(options);
const { context } = await this._channel.launchBrowser(contextOptions);

View file

@ -156,7 +156,7 @@ export class AndroidDeviceDispatcher extends Dispatcher<AndroidDevice, channels.
}
async launchBrowser(params: channels.AndroidDeviceLaunchBrowserParams): Promise<channels.AndroidDeviceLaunchBrowserResult> {
const context = await this._object.launchBrowser(params.packageName, params);
const context = await this._object.launchBrowser(params.pkg, params);
return { context: new BrowserContextDispatcher(this._scope, context) };
}

View file

@ -2648,7 +2648,7 @@ export type AndroidDeviceInputDragOptions = {
};
export type AndroidDeviceInputDragResult = void;
export type AndroidDeviceLaunchBrowserParams = {
packageName?: string,
pkg?: string,
ignoreHTTPSErrors?: boolean,
javaScriptEnabled?: boolean,
bypassCSP?: boolean,
@ -2693,7 +2693,7 @@ export type AndroidDeviceLaunchBrowserParams = {
},
};
export type AndroidDeviceLaunchBrowserOptions = {
packageName?: string,
pkg?: string,
ignoreHTTPSErrors?: boolean,
javaScriptEnabled?: boolean,
bypassCSP?: boolean,

View file

@ -2236,7 +2236,7 @@ AndroidDevice:
launchBrowser:
parameters:
packageName: string?
pkg: string?
ignoreHTTPSErrors: boolean?
javaScriptEnabled: boolean?
bypassCSP: boolean?

View file

@ -986,7 +986,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
steps: tNumber,
});
scheme.AndroidDeviceLaunchBrowserParams = tObject({
packageName: tOptional(tString),
pkg: tOptional(tString),
ignoreHTTPSErrors: tOptional(tBoolean),
javaScriptEnabled: tOptional(tBoolean),
bypassCSP: tOptional(tBoolean),

View file

@ -31,6 +31,7 @@ import { Transport } from '../../protocol/transport';
import { RecentLogsCollector } from '../../utils/debugLogger';
import { TimeoutSettings } from '../../utils/timeoutSettings';
import { AndroidWebView } from '../../protocol/channels';
import { CRPage } from '../chromium/crPage';
const readFileAsync = util.promisify(fs.readFile);
@ -267,10 +268,19 @@ export class AndroidDevice extends EventEmitter {
const browser = await CRBrowser.connect(androidBrowser, browserOptions);
const controller = new ProgressController();
const defaultContext = browser._defaultContext!;
await controller.run(async progress => {
await browser._defaultContext!._loadDefaultContextAsIs(progress);
await defaultContext._loadDefaultContextAsIs(progress);
});
return browser._defaultContext!;
{
// TODO: remove after rolling to r838157
// Force page scale factor update.
const page = defaultContext.pages()[0];
const crPage = page._delegate as CRPage;
await crPage._mainFrameSession._client.send('Emulation.setDeviceMetricsOverride', { mobile: false, width: 0, height: 0, deviceScaleFactor: 0 });
await crPage._mainFrameSession._client.send('Emulation.clearDeviceMetricsOverride', {});
}
return defaultContext;
}
webViews(): AndroidWebView[] {

View file

@ -38,4 +38,14 @@ if (process.env.PW_ANDROID_TESTS) {
await page.close();
await context.close();
});
it('should check', async function({ device }) {
const context = await device.launchBrowser();
const [page] = context.pages();
await page.setContent(`<input id='checkbox' type='checkbox'></input>`);
await page.check('input');
expect(await page.evaluate(() => window['checkbox'].checked)).toBe(true);
await page.close();
await context.close();
});
}

View file

@ -12,7 +12,7 @@ echo "Killing previous emulators"
${ANDROID_HOME}/platform-tools/adb devices | grep emulator | cut -f1 | while read line; do ${ANDROID_HOME}/platform-tools/adb -s $line emu kill; done
echo "Starting emulator"
nohup ${ANDROID_HOME}/emulator/emulator -avd android30 -no-audio -no-snapshot &
nohup ${ANDROID_HOME}/emulator/emulator -avd android30 -no-audio -gpu swiftshader &
${ANDROID_HOME}/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82'
${ANDROID_HOME}/platform-tools/adb devices
echo "Emulator started"