fix(adb): force page scale factor update on connection (#4755)
This commit is contained in:
parent
a721ba5a8a
commit
774eb53980
2
android-types-internal.d.ts
vendored
2
android-types-internal.d.ts
vendored
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) };
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -2236,7 +2236,7 @@ AndroidDevice:
|
|||
|
||||
launchBrowser:
|
||||
parameters:
|
||||
packageName: string?
|
||||
pkg: string?
|
||||
ignoreHTTPSErrors: boolean?
|
||||
javaScriptEnabled: boolean?
|
||||
bypassCSP: boolean?
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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[] {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
Loading…
Reference in a new issue