Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Cookies API #53

Closed
aslushnikov opened this issue Jul 6, 2017 · 13 comments
Closed

Add Cookies API #53

aslushnikov opened this issue Jul 6, 2017 · 13 comments
Assignees

Comments

@aslushnikov
Copy link
Contributor

There should be an API to access cookies.

@aslushnikov aslushnikov added this to the v0.1 milestone Jul 6, 2017
@paulirish
Copy link
Collaborator

paulirish commented Jul 6, 2017

FWIW the async cookie API is gaining steam and being implemented in chrome. Don't know if the API there is a good match for these usecases though.

Separately, I don't think this should be in the 0.1. We can ship without this.

@aslushnikov aslushnikov removed this from the v0.1 milestone Jul 7, 2017
@aslushnikov
Copy link
Contributor Author

Discussed with @paulirish, pulling cookies out of this milestone since they seem to be not that important.

@JoelEinbinder JoelEinbinder self-assigned this Aug 10, 2017
@shellscape
Copy link

shellscape commented Aug 16, 2017

@paulirish something to bear in mind: chrome currently has no support for cookies and the file:// protocol - something users leveraging this for automated tests will surely want. (it looks like the --enable-file-cookies flag does bupkis this days)

@Garbee
Copy link
Contributor

Garbee commented Aug 16, 2017

What is the use-case to have a cookie associated with a local file serve?

@shellscape
Copy link

@Garbee off of the top of my head; running local mocha tests that include automation tests. there are a litany of modules which utilize headless (and visible) browsers for testing in the browser via mocha, jasmine, etc. I'm running into this particular problem in mocha-chrome, which isn't really meant for automation out of the box, and I can see people who need automation using puppeteer for testing + automation.

@shellscape
Copy link

shellscape commented Aug 16, 2017

fwiw, I'm presently getting around this by injecting the following, using Page.addScriptToEvaluateOnLoad with some logic to check the protocol:

  Object.defineProperty(document, 'cookie', {
    get: function () {
      return this.value || '';
    },
    set: function (cookie) {
      cookie = cookie || '';

      const cutoff = cookie.indexOf(';');
      const pair = cookie.substring(0, cutoff >= 0 ? cutoff : cookie.length);
      const cookies = this.value ? this.value.split('; ') : [];

      cookies.push(pair);

      return this.value = cookies.join('; ');
    }
  });

It 'aint pretty, and I'm loathe to do it, but it gets me by.

@barbolo
Copy link

barbolo commented Aug 20, 2017

Is it possible to support multiple profiles (or multiple cookie jars) for a single chromium launch?

Usage example: choose a user profile (or cookie jar) when creating a new Page object.

@aslushnikov
Copy link
Contributor Author

@barbolo this will be covered with #85

@shellscape
Copy link

@aslushnikov that's only half true - context/sessions will be supported but there's been no public statement about cookies for chrome.

@aslushnikov
Copy link
Contributor Author

@shellscape browser contexts isolate cookies

@shellscape
Copy link

@aslushnikov see #53 (comment)

aslushnikov pushed a commit that referenced this issue Aug 24, 2017
Introduce cookies API. 

Fixes #53.
@barbolo
Copy link

barbolo commented Aug 24, 2017

That's great, @aslushnikov.

Can you confirm if each page has a different cookies context or if they all share the same cookies?

@aslushnikov
Copy link
Contributor Author

@barbolo they share the same context. The #85 will do the isolation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants