{"action":"created","issue":{"url":"https://api.github.com/repos/DevExpress/testcafe/issues/207","repository_url":"https://api.github.com/repos/DevExpress/testcafe","labels_url":"https://api.github.com/repos/DevExpress/testcafe/issues/207/labels{/name}","comments_url":"https://api.github.com/repos/DevExpress/testcafe/issues/207/comments","events_url":"https://api.github.com/repos/DevExpress/testcafe/issues/207/events","html_url":"https://github.com/DevExpress/testcafe/issues/207","id":119772882,"number":207,"title":"Implement browser provider plugin system","user":{"login":"inikulin","id":453071,"avatar_url":"https://avatars.githubusercontent.com/u/453071?v=3","gravatar_id":"","url":"https://api.github.com/users/inikulin","html_url":"https://github.com/inikulin","followers_url":"https://api.github.com/users/inikulin/followers","following_url":"https://api.github.com/users/inikulin/following{/other_user}","gists_url":"https://api.github.com/users/inikulin/gists{/gist_id}","starred_url":"https://api.github.com/users/inikulin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/inikulin/subscriptions","organizations_url":"https://api.github.com/users/inikulin/orgs","repos_url":"https://api.github.com/users/inikulin/repos","events_url":"https://api.github.com/users/inikulin/events{/privacy}","received_events_url":"https://api.github.com/users/inikulin/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/DevExpress/testcafe/labels/!IMPORTANT!","name":"!IMPORTANT!","color":"eb6420"},{"url":"https://api.github.com/repos/DevExpress/testcafe/labels/AREA:%20server","name":"AREA: server","color":"fef2c0"},{"url":"https://api.github.com/repos/DevExpress/testcafe/labels/DOCUMENTATION:%20required","name":"DOCUMENTATION: required","color":"006b75"},{"url":"https://api.github.com/repos/DevExpress/testcafe/labels/SYSTEM:%20browser%20connection","name":"SYSTEM: browser connection","color":"bfe5bf"},{"url":"https://api.github.com/repos/DevExpress/testcafe/labels/SYSTEM:%20plugins","name":"SYSTEM: plugins","color":"bfe5bf"},{"url":"https://api.github.com/repos/DevExpress/testcafe/labels/TYPE:%20enhancement","name":"TYPE: enhancement","color":"f7c6c7"}],"state":"open","locked":false,"assignee":{"login":"AndreyBelym","id":4479386,"avatar_url":"https://avatars.githubusercontent.com/u/4479386?v=3","gravatar_id":"","url":"https://api.github.com/users/AndreyBelym","html_url":"https://github.com/AndreyBelym","followers_url":"https://api.github.com/users/AndreyBelym/followers","following_url":"https://api.github.com/users/AndreyBelym/following{/other_user}","gists_url":"https://api.github.com/users/AndreyBelym/gists{/gist_id}","starred_url":"https://api.github.com/users/AndreyBelym/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndreyBelym/subscriptions","organizations_url":"https://api.github.com/users/AndreyBelym/orgs","repos_url":"https://api.github.com/users/AndreyBelym/repos","events_url":"https://api.github.com/users/AndreyBelym/events{/privacy}","received_events_url":"https://api.github.com/users/AndreyBelym/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2015-12-01T17:56:38Z","updated_at":"2016-05-05T11:13:37Z","closed_at":null,"body":""},"comment":{"url":"https://api.github.com/repos/DevExpress/testcafe/issues/comments/217126932","html_url":"https://github.com/DevExpress/testcafe/issues/207#issuecomment-217126932","issue_url":"https://api.github.com/repos/DevExpress/testcafe/issues/207","id":217126932,"user":{"login":"AndreyBelym","id":4479386,"avatar_url":"https://avatars.githubusercontent.com/u/4479386?v=3","gravatar_id":"","url":"https://api.github.com/users/AndreyBelym","html_url":"https://github.com/AndreyBelym","followers_url":"https://api.github.com/users/AndreyBelym/followers","following_url":"https://api.github.com/users/AndreyBelym/following{/other_user}","gists_url":"https://api.github.com/users/AndreyBelym/gists{/gist_id}","starred_url":"https://api.github.com/users/AndreyBelym/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndreyBelym/subscriptions","organizations_url":"https://api.github.com/users/AndreyBelym/orgs","repos_url":"https://api.github.com/users/AndreyBelym/repos","events_url":"https://api.github.com/users/AndreyBelym/events{/privacy}","received_events_url":"https://api.github.com/users/AndreyBelym/received_events","type":"User","site_admin":false},"created_at":"2016-05-05T11:13:37Z","updated_at":"2016-05-05T11:13:37Z","body":"> I'm not sure I understand how Browser class should be implemented. E.g. if I make saucelabs plugin and I have 50 browser there should I implement 50 classes with that interface?\r\n\r\nNope, you implement a class, that starts a tunnel to Sauce, and starts a browser by specified capability string. Then `testcafe` create 50 instances of this class with different capability strings."}}