feat(playwright-core): add remove cookies api
This patch contains removeCookies method to remove cookies from BrowserContext by it's names
This commit is contained in:
parent
9a38aedf09
commit
8d7e4a4f0e
|
|
@ -1010,6 +1010,21 @@ Creates a new page in the browser context.
|
||||||
|
|
||||||
Returns all open pages in the context.
|
Returns all open pages in the context.
|
||||||
|
|
||||||
|
## async method: BrowserContext.removeCookies
|
||||||
|
* since: v1.42
|
||||||
|
|
||||||
|
Removes cookies from context.
|
||||||
|
|
||||||
|
**Usage**
|
||||||
|
|
||||||
|
```js
|
||||||
|
await browserContext.removeCookies([cookieName1, cookieName2]);
|
||||||
|
```
|
||||||
|
|
||||||
|
### param: BrowserContext.removeCookies.cookieNames
|
||||||
|
* since: v1.42
|
||||||
|
- `cookieNames` <[string]|[Array]<[string]>> - list of cookie names to remove from context
|
||||||
|
|
||||||
## property: BrowserContext.request
|
## property: BrowserContext.request
|
||||||
* since: v1.16
|
* since: v1.16
|
||||||
* langs:
|
* langs:
|
||||||
|
|
|
||||||
|
|
@ -269,6 +269,13 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel>
|
||||||
await this._channel.clearCookies();
|
await this._channel.clearCookies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async removeCookies(cookieNames: string | string[]): Promise<void> {
|
||||||
|
if (typeof cookieNames === 'string')
|
||||||
|
cookieNames = [cookieNames];
|
||||||
|
|
||||||
|
await this._channel.removeCookies({ cookieNames: cookieNames as string[] });
|
||||||
|
}
|
||||||
|
|
||||||
async grantPermissions(permissions: string[], options?: { origin?: string }): Promise<void> {
|
async grantPermissions(permissions: string[], options?: { origin?: string }): Promise<void> {
|
||||||
await this._channel.grantPermissions({ permissions, ...options });
|
await this._channel.grantPermissions({ permissions, ...options });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -828,6 +828,10 @@ scheme.BrowserContextAddInitScriptParams = tObject({
|
||||||
scheme.BrowserContextAddInitScriptResult = tOptional(tObject({}));
|
scheme.BrowserContextAddInitScriptResult = tOptional(tObject({}));
|
||||||
scheme.BrowserContextClearCookiesParams = tOptional(tObject({}));
|
scheme.BrowserContextClearCookiesParams = tOptional(tObject({}));
|
||||||
scheme.BrowserContextClearCookiesResult = tOptional(tObject({}));
|
scheme.BrowserContextClearCookiesResult = tOptional(tObject({}));
|
||||||
|
scheme.BrowserContextRemoveCookiesParams = tObject({
|
||||||
|
cookieNames: tArray(tString),
|
||||||
|
});
|
||||||
|
scheme.BrowserContextRemoveCookiesResult = tOptional(tObject({}));
|
||||||
scheme.BrowserContextClearPermissionsParams = tOptional(tObject({}));
|
scheme.BrowserContextClearPermissionsParams = tOptional(tObject({}));
|
||||||
scheme.BrowserContextClearPermissionsResult = tOptional(tObject({}));
|
scheme.BrowserContextClearPermissionsResult = tOptional(tObject({}));
|
||||||
scheme.BrowserContextCloseParams = tObject({
|
scheme.BrowserContextCloseParams = tObject({
|
||||||
|
|
|
||||||
|
|
@ -276,6 +276,15 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
return await this.doGetCookies(urls as string[]);
|
return await this.doGetCookies(urls as string[]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async removeCookies(cookieNames: string | string[]): Promise<void> {
|
||||||
|
const setCookies = await this.cookies();
|
||||||
|
|
||||||
|
const newCookiesSet = setCookies.filter(c => !cookieNames.includes(c.name));
|
||||||
|
|
||||||
|
await this.clearCookies();
|
||||||
|
await this.addCookies(newCookiesSet);
|
||||||
|
}
|
||||||
|
|
||||||
setHTTPCredentials(httpCredentials?: types.Credentials): Promise<void> {
|
setHTTPCredentials(httpCredentials?: types.Credentials): Promise<void> {
|
||||||
return this.doSetHTTPCredentials(httpCredentials);
|
return this.doSetHTTPCredentials(httpCredentials);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -224,6 +224,10 @@ export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channel
|
||||||
await this._context.clearCookies();
|
await this._context.clearCookies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async removeCookies(params: channels.BrowserContextRemoveCookiesParams): Promise<void> {
|
||||||
|
await this._context.removeCookies(params.cookieNames);
|
||||||
|
}
|
||||||
|
|
||||||
async grantPermissions(params: channels.BrowserContextGrantPermissionsParams): Promise<void> {
|
async grantPermissions(params: channels.BrowserContextGrantPermissionsParams): Promise<void> {
|
||||||
await this._context.grantPermissions(params.permissions, params.origin);
|
await this._context.grantPermissions(params.permissions, params.origin);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
13
packages/playwright-core/types/types.d.ts
vendored
13
packages/playwright-core/types/types.d.ts
vendored
|
|
@ -8438,6 +8438,19 @@ export interface BrowserContext {
|
||||||
*/
|
*/
|
||||||
pages(): Array<Page>;
|
pages(): Array<Page>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes cookies from context.
|
||||||
|
*
|
||||||
|
* **Usage**
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* await browserContext.removeCookies([cookieName1, cookieName2]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @param cookieNames
|
||||||
|
*/
|
||||||
|
removeCookies(cookieNames: string|ReadonlyArray<string>): Promise<void>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing provides the capability to modify network requests that are made by any page in the browser context. Once
|
* Routing provides the capability to modify network requests that are made by any page in the browser context. Once
|
||||||
* route is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
|
* route is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
|
||||||
|
|
|
||||||
|
|
@ -1427,6 +1427,7 @@ export interface BrowserContextChannel extends BrowserContextEventTarget, EventT
|
||||||
addCookies(params: BrowserContextAddCookiesParams, metadata?: CallMetadata): Promise<BrowserContextAddCookiesResult>;
|
addCookies(params: BrowserContextAddCookiesParams, metadata?: CallMetadata): Promise<BrowserContextAddCookiesResult>;
|
||||||
addInitScript(params: BrowserContextAddInitScriptParams, metadata?: CallMetadata): Promise<BrowserContextAddInitScriptResult>;
|
addInitScript(params: BrowserContextAddInitScriptParams, metadata?: CallMetadata): Promise<BrowserContextAddInitScriptResult>;
|
||||||
clearCookies(params?: BrowserContextClearCookiesParams, metadata?: CallMetadata): Promise<BrowserContextClearCookiesResult>;
|
clearCookies(params?: BrowserContextClearCookiesParams, metadata?: CallMetadata): Promise<BrowserContextClearCookiesResult>;
|
||||||
|
removeCookies(params: BrowserContextRemoveCookiesParams, metadata?: CallMetadata): Promise<BrowserContextRemoveCookiesResult>;
|
||||||
clearPermissions(params?: BrowserContextClearPermissionsParams, metadata?: CallMetadata): Promise<BrowserContextClearPermissionsResult>;
|
clearPermissions(params?: BrowserContextClearPermissionsParams, metadata?: CallMetadata): Promise<BrowserContextClearPermissionsResult>;
|
||||||
close(params: BrowserContextCloseParams, metadata?: CallMetadata): Promise<BrowserContextCloseResult>;
|
close(params: BrowserContextCloseParams, metadata?: CallMetadata): Promise<BrowserContextCloseResult>;
|
||||||
cookies(params: BrowserContextCookiesParams, metadata?: CallMetadata): Promise<BrowserContextCookiesResult>;
|
cookies(params: BrowserContextCookiesParams, metadata?: CallMetadata): Promise<BrowserContextCookiesResult>;
|
||||||
|
|
@ -1523,6 +1524,13 @@ export type BrowserContextAddInitScriptResult = void;
|
||||||
export type BrowserContextClearCookiesParams = {};
|
export type BrowserContextClearCookiesParams = {};
|
||||||
export type BrowserContextClearCookiesOptions = {};
|
export type BrowserContextClearCookiesOptions = {};
|
||||||
export type BrowserContextClearCookiesResult = void;
|
export type BrowserContextClearCookiesResult = void;
|
||||||
|
export type BrowserContextRemoveCookiesParams = {
|
||||||
|
cookieNames: string[],
|
||||||
|
};
|
||||||
|
export type BrowserContextRemoveCookiesOptions = {
|
||||||
|
|
||||||
|
};
|
||||||
|
export type BrowserContextRemoveCookiesResult = void;
|
||||||
export type BrowserContextClearPermissionsParams = {};
|
export type BrowserContextClearPermissionsParams = {};
|
||||||
export type BrowserContextClearPermissionsOptions = {};
|
export type BrowserContextClearPermissionsOptions = {};
|
||||||
export type BrowserContextClearPermissionsResult = void;
|
export type BrowserContextClearPermissionsResult = void;
|
||||||
|
|
|
||||||
|
|
@ -1032,6 +1032,12 @@ BrowserContext:
|
||||||
|
|
||||||
clearCookies:
|
clearCookies:
|
||||||
|
|
||||||
|
removeCookies:
|
||||||
|
parameters:
|
||||||
|
cookieNames:
|
||||||
|
type: array
|
||||||
|
items: string
|
||||||
|
|
||||||
clearPermissions:
|
clearPermissions:
|
||||||
|
|
||||||
close:
|
close:
|
||||||
|
|
@ -3222,7 +3228,7 @@ ElectronApplication:
|
||||||
events:
|
events:
|
||||||
close:
|
close:
|
||||||
console:
|
console:
|
||||||
parameters:
|
parameters:
|
||||||
$mixin: ConsoleMessage
|
$mixin: ConsoleMessage
|
||||||
|
|
||||||
Android:
|
Android:
|
||||||
|
|
|
||||||
47
tests/library/browsercontext-remove-cookies.spec.ts
Normal file
47
tests/library/browsercontext-remove-cookies.spec.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
/**
|
||||||
|
* Copyright 2018 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 { contextTest as it, expect } from '../config/browserTest';
|
||||||
|
|
||||||
|
it('should remove cookies', async ({ context, page, server }) => {
|
||||||
|
await page.goto(server.EMPTY_PAGE);
|
||||||
|
await context.addCookies([{
|
||||||
|
url: server.EMPTY_PAGE,
|
||||||
|
name: 'cookie1',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: server.EMPTY_PAGE,
|
||||||
|
name: 'cookie2',
|
||||||
|
value: '2'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: server.EMPTY_PAGE,
|
||||||
|
name: 'cookie3',
|
||||||
|
value: '3'
|
||||||
|
}]);
|
||||||
|
expect(await page.evaluate('document.cookie')).toBe('cookie1=1; cookie2=2; cookie3=3');
|
||||||
|
await context.removeCookies(['cookie1', 'cookie2']);
|
||||||
|
expect(await page.evaluate('document.cookie')).toBe('cookie3=3');
|
||||||
|
await page.reload();
|
||||||
|
expect(await page.evaluate('document.cookie')).toBe('cookie3=3');
|
||||||
|
await context.removeCookies('cookie3');
|
||||||
|
expect(await page.evaluate('document.cookie')).toBe('');
|
||||||
|
await page.reload();
|
||||||
|
expect(await page.evaluate('document.cookie')).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
Loading…
Reference in a new issue