mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-14 13:45:36 +03:00
d76166beca
This patch moves fixtures.js to base.fixtures.ts that sits next to tests. All tests get an extra import to get the base fixtures (both types and implementations).
76 lines
3.2 KiB
TypeScript
76 lines
3.2 KiB
TypeScript
/**
|
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
* Modifications copyright (c) Microsoft Corporation.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
import './base.fixture';
|
|
|
|
import utils from './utils';
|
|
const {FFOX, CHROMIUM, WEBKIT, WIN, USES_HOOKS, CHANNEL} = testOptions;
|
|
|
|
it.slow()('should be able to reconnect to a browser', async({browserType, defaultBrowserOptions, server, toImpl}) => {
|
|
const browserServer = await browserType.launchServer(defaultBrowserOptions);
|
|
{
|
|
const browser = await browserType.connect({ wsEndpoint: browserServer.wsEndpoint() });
|
|
const browserContext = await browser.newContext();
|
|
const page = await browserContext.newPage();
|
|
await page.goto(server.EMPTY_PAGE);
|
|
await browser.close();
|
|
}
|
|
{
|
|
const browser = await browserType.connect({ wsEndpoint: browserServer.wsEndpoint() });
|
|
const browserContext = await browser.newContext();
|
|
const page = await browserContext.newPage();
|
|
await page.goto(server.EMPTY_PAGE);
|
|
await browser.close();
|
|
}
|
|
if (toImpl)
|
|
await toImpl(browserServer)._checkLeaks();
|
|
await browserServer.close();
|
|
});
|
|
|
|
it.fail(USES_HOOKS || (CHROMIUM && WIN)).slow()('should handle exceptions during connect', async({browserType, defaultBrowserOptions, toImpl}) => {
|
|
const browserServer = await browserType.launchServer(defaultBrowserOptions);
|
|
const __testHookBeforeCreateBrowser = () => { throw new Error('Dummy') };
|
|
const error = await browserType.connect({ wsEndpoint: browserServer.wsEndpoint(), __testHookBeforeCreateBrowser } as any).catch(e => e);
|
|
if (toImpl)
|
|
await toImpl(browserServer)._checkLeaks();
|
|
await browserServer.close();
|
|
expect(error.message).toContain('Dummy');
|
|
});
|
|
|
|
it('should set the browser connected state', async ({browserType, defaultBrowserOptions, toImpl}) => {
|
|
const browserServer = await browserType.launchServer(defaultBrowserOptions);
|
|
const remote = await browserType.connect({ wsEndpoint: browserServer.wsEndpoint() });
|
|
expect(remote.isConnected()).toBe(true);
|
|
await remote.close();
|
|
expect(remote.isConnected()).toBe(false);
|
|
if (toImpl)
|
|
await toImpl(browserServer)._checkLeaks();
|
|
await browserServer.close();
|
|
});
|
|
|
|
it('should throw when used after isConnected returns false', async({browserType, defaultBrowserOptions}) => {
|
|
const browserServer = await browserType.launchServer(defaultBrowserOptions);
|
|
const remote = await browserType.connect({ wsEndpoint: browserServer.wsEndpoint() });
|
|
const page = await remote.newPage();
|
|
await Promise.all([
|
|
browserServer.close(),
|
|
new Promise(f => remote.once('disconnected', f)),
|
|
]);
|
|
expect(remote.isConnected()).toBe(false);
|
|
const error = await page.evaluate('1 + 1').catch(e => e) as Error;
|
|
expect(error.message).toContain('has been closed');
|
|
});
|