From 298056f9bc8bdaa4e71e702ca6603d1c91e54756 Mon Sep 17 00:00:00 2001 From: Joey van Dijk Date: Tue, 1 Aug 2017 08:05:17 +0200 Subject: [PATCH 1/3] implement correct way to clear all cookies while currently it did not show any feedback if cookies could not be cleared --- src/chrome/local-runtime.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/chrome/local-runtime.ts b/src/chrome/local-runtime.ts index 8060be57..fd2b4a46 100644 --- a/src/chrome/local-runtime.ts +++ b/src/chrome/local-runtime.ts @@ -159,8 +159,14 @@ export default class LocalRuntime { } async cookiesClearAll(): Promise { - await clearCookies(this.client) - this.log('Cookies cleared') + const { Network } = this.client + const canClearCookies = await Network.canClearBrowserCookies() + if (canClearCookies) { + await clearCookies(this.client) + this.log('Cookies cleared') + } else { + this.log('Cookies could not be cleared') + } } async press(keyCode: number, count?: number, modifiers?: any): Promise { From f3dc4a35a1bf6a08b8a9ebb0d07b275f83e1760e Mon Sep 17 00:00:00 2001 From: Joey van Dijk Date: Tue, 1 Aug 2017 08:20:08 +0200 Subject: [PATCH 2/3] rewrite clear and delete API-name of a(ll) cookie(s) + update documentation --- README.md | 4 ++-- docs/api.md | 26 +++++++++++++++++--------- src/api.ts | 16 ++++++++++++---- src/chrome/local-runtime.ts | 20 +++++++++++++++++--- src/types.ts | 7 ++++++- src/util.ts | 6 ++++++ 6 files changed, 60 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 5d782ac9..418f22a6 100644 --- a/README.md +++ b/README.md @@ -168,8 +168,8 @@ const chromeless = new Chromeless({ - [`cookiesSet(name: string, value: string)`](docs/api.md#api-cookiesset) - [`cookiesSet(cookie: Cookie)`](docs/api.md#api-cookiesset-one) - [`cookiesSet(cookies: Cookie[])`](docs/api.md#api-cookiesset-many) -- [`cookiesClear(name: string)`](docs/api.md#api-cookiesclear) -- [`cookiesClearAll()`](docs/api.md#api-cookiesclearall) +- [`cookiesDelete(name: string)`](docs/api.md#api-cookiesdelete) +- [`cookiesClear()`](docs/api.md#api-cookiesclear) ## Configuring Development Environment diff --git a/docs/api.md b/docs/api.md index c911269f..5b896478 100644 --- a/docs/api.md +++ b/docs/api.md @@ -33,8 +33,8 @@ Chromeless provides TypeScript typings. - [`cookiesSet(name: string, value: string)`](#api-cookiesset) - [`cookiesSet(cookie: Cookie)`](#api-cookiesset-one) - [`cookiesSet(cookies: Cookie[])`](#api-cookiesset-many) -- [`cookiesClear(name: string)`](#api-cookiesclear) -- [`cookiesClearAll()`](#api-cookiesclearall) +- [`cookiesDelete(name: string)`](#api-cookiesdelete) +- [`cookiesClear()`](#api-cookiesclear) --------------------------------------- @@ -501,21 +501,29 @@ await chromeless.cookiesSet([ -### cookiesClear(name: string) - Not implemented yet +### cookiesDelete(name: string) - Not implemented yet -Not implemented yet +Delete a specific cookie. ---------------------------------------- +__Arguments__ +- `name` - name of the cookie + +__Example__ - +```js +await chromeless.cookiesDelete('cookieName') +``` -### cookiesClearAll(): Chromeless +--------------------------------------- + + -Clears browser cookies. +### cookiesClear(): Chromeless +Clears all browser cookies. __Example__ ```js -await chromeless.cookiesClearAll() +await chromeless.cookiesClear() ``` diff --git a/src/api.ts b/src/api.ts index 75d8c184..22a0e688 100644 --- a/src/api.ts +++ b/src/api.ts @@ -209,12 +209,20 @@ export default class Chromeless implements Promise { return this } - cookiesClear(name: string): Chromeless { - throw new Error('Not implemented yet') + cookiesDelete(name: string, url: string): Chromeless { + if (typeof name === 'undefined') { + throw new Error('Cookie name should be defined.') + } + if (typeof url === 'undefined') { + throw new Error('Cookie url should be defined.') + } + this.queue.enqueue({type: 'cookiesDelete', name, url}) + + return this } - cookiesClearAll(): Chromeless { - this.queue.enqueue({type: 'cookiesClearAll'}) + cookiesClear(): Chromeless { + this.queue.enqueue({type: 'cookiesClear'}) return this } diff --git a/src/chrome/local-runtime.ts b/src/chrome/local-runtime.ts index fd2b4a46..d8d21949 100644 --- a/src/chrome/local-runtime.ts +++ b/src/chrome/local-runtime.ts @@ -14,6 +14,7 @@ import { scrollTo, press, clearCookies, + deleteCookie, getCookies, setCookies, getAllCookies, version, } from '../util' @@ -57,8 +58,10 @@ export default class LocalRuntime { return this.press(command.keyCode, command.count, command.modifiers) case 'scrollTo': return this.scrollTo(command.x, command.y) - case 'cookiesClearAll': - return this.cookiesClearAll() + case 'cookiesDelete': + return this.cookiesDelete(command.name, command.url) + case 'cookiesClear': + return this.cookiesClear() case 'cookiesGet': return this.cookiesGet(command.nameOrQuery) case 'cookiesGetAll': @@ -158,7 +161,18 @@ export default class LocalRuntime { throw new Error(`cookiesSet(): Invalid input ${nameOrCookies}, ${value}`) } - async cookiesClearAll(): Promise { + async cookiesDelete(name: string, url: string): Promise { + const { Network } = this.client + const canClearCookies = await Network.canClearBrowserCookies() + if (canClearCookies) { + await deleteCookie(this.client, name, url) + this.log(`Cookie ${name} cleared`) + } else { + this.log(`Cookie ${name} could not be cleared`) + } + } + + async cookiesClear(): Promise { const { Network } = this.client const canClearCookies = await Network.canClearBrowserCookies() if (canClearCookies) { diff --git a/src/types.ts b/src/types.ts index f0bc1ac5..ad947b46 100644 --- a/src/types.ts +++ b/src/types.ts @@ -93,7 +93,12 @@ export type Command = selector?: string } | { - type: 'cookiesClearAll' + type: 'cookiesClear' + } + | { + type: 'cookiesDelete' + name: string + url: string } | { type: 'cookiesSet' diff --git a/src/util.ts b/src/util.ts index d47c0830..b6185155 100644 --- a/src/util.ts +++ b/src/util.ts @@ -252,6 +252,12 @@ function getUrlFromCookie(cookie: Cookie) { return `https://${domain}` } +export async function deleteCookie(client: Client, name: string, url: string): Promise { + const {Network} = client + + await Network.deleteCookie({cookieName: name, url}) +} + export async function clearCookies(client: Client): Promise { const {Network} = client From 918e37465e386512c205e28f60c79bb8804fb93e Mon Sep 17 00:00:00 2001 From: Joey van Dijk Date: Thu, 3 Aug 2017 21:56:06 +0200 Subject: [PATCH 3/3] rename cookiesClear & cookiesDelete to clearCookies & deleteCookies + update documentation --- README.md | 4 ++-- docs/api.md | 16 ++++++++-------- src/api.ts | 8 ++++---- src/chrome/local-runtime.ts | 12 ++++++------ src/types.ts | 4 ++-- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 3d4a024f..b9e6c962 100644 --- a/README.md +++ b/README.md @@ -167,8 +167,8 @@ const chromeless = new Chromeless({ - [`cookiesSet(name: string, value: string)`](docs/api.md#api-cookiesset) - [`cookiesSet(cookie: Cookie)`](docs/api.md#api-cookiesset-one) - [`cookiesSet(cookies: Cookie[])`](docs/api.md#api-cookiesset-many) -- [`cookiesDelete(name: string)`](docs/api.md#api-cookiesdelete) -- [`cookiesClear()`](docs/api.md#api-cookiesclear) +- [`deleteCookies(name: string)`](docs/api.md#api-deletecookies) +- [`clearCookies()`](docs/api.md#api-clearcookies) - [`clearInput(selector: string)`](docs/api.md#api-clearInput) ## Configuring Development Environment diff --git a/docs/api.md b/docs/api.md index 123a1c6e..8a62c9ac 100644 --- a/docs/api.md +++ b/docs/api.md @@ -36,8 +36,8 @@ Chromeless provides TypeScript typings. - [`cookiesSet(name: string, value: string)`](#api-cookiesset) - [`cookiesSet(cookie: Cookie)`](#api-cookiesset-one) - [`cookiesSet(cookies: Cookie[])`](#api-cookiesset-many) -- [`cookiesDelete(name: string)`](#api-cookiesdelete) -- [`cookiesClear()`](#api-cookiesclear) +- [`deleteCookies(name: string)`](#api-deletecookies) +- [`clearCookies()`](#api-clearcookies) --------------------------------------- @@ -589,9 +589,9 @@ await chromeless.cookiesSet([ --------------------------------------- - + -### cookiesDelete(name: string) - Not implemented yet +### deleteCookies(name: string) - Not implemented yet Delete a specific cookie. @@ -601,21 +601,21 @@ __Arguments__ __Example__ ```js -await chromeless.cookiesDelete('cookieName') +await chromeless.deleteCookies('cookieName') ``` --------------------------------------- - + -### cookiesClear(): Chromeless +### clearCookies(): Chromeless Clears all browser cookies. __Example__ ```js -await chromeless.cookiesClear() +await chromeless.clearCookies() ``` --------------------------------------- diff --git a/src/api.ts b/src/api.ts index 9e586e94..3afc3a40 100644 --- a/src/api.ts +++ b/src/api.ts @@ -266,20 +266,20 @@ export default class Chromeless implements Promise { return this } - cookiesDelete(name: string, url: string): Chromeless { + deleteCookies(name: string, url: string): Chromeless { if (typeof name === 'undefined') { throw new Error('Cookie name should be defined.') } if (typeof url === 'undefined') { throw new Error('Cookie url should be defined.') } - this.queue.enqueue({type: 'cookiesDelete', name, url}) + this.queue.enqueue({type: 'deleteCookies', name, url}) return this } - cookiesClear(): Chromeless { - this.queue.enqueue({type: 'cookiesClear'}) + clearCookies(): Chromeless { + this.queue.enqueue({type: 'clearCookies'}) return this } diff --git a/src/chrome/local-runtime.ts b/src/chrome/local-runtime.ts index f51dd415..a5880967 100644 --- a/src/chrome/local-runtime.ts +++ b/src/chrome/local-runtime.ts @@ -83,10 +83,10 @@ export default class LocalRuntime { return this.press(command.keyCode, command.count, command.modifiers) case 'scrollTo': return this.scrollTo(command.x, command.y) - case 'cookiesDelete': - return this.cookiesDelete(command.name, command.url) - case 'cookiesClear': - return this.cookiesClear() + case 'deleteCookies': + return this.deleteCookies(command.name, command.url) + case 'clearCookies': + return this.clearCookies() case 'setHtml': return this.setHtml(command.html) case 'cookiesGet': @@ -280,7 +280,7 @@ export default class LocalRuntime { throw new Error(`cookiesSet(): Invalid input ${nameOrCookies}, ${value}`) } - async cookiesDelete(name: string, url: string): Promise { + async deleteCookies(name: string, url: string): Promise { const { Network } = this.client const canClearCookies = await Network.canClearBrowserCookies() if (canClearCookies) { @@ -291,7 +291,7 @@ export default class LocalRuntime { } } - async cookiesClear(): Promise { + async clearCookies(): Promise { const { Network } = this.client const canClearCookies = await Network.canClearBrowserCookies() if (canClearCookies) { diff --git a/src/types.ts b/src/types.ts index b489d257..6701b957 100644 --- a/src/types.ts +++ b/src/types.ts @@ -128,10 +128,10 @@ export type Command = selector?: string } | { - type: 'cookiesClear' + type: 'clearCookies' } | { - type: 'cookiesDelete' + type: 'deleteCookies' name: string url: string }