Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

TypeScript changes - change the protractor/globals import to just protractor #3564

Closed
juliemr opened this issue Sep 15, 2016 · 3 comments
Closed

Comments

@juliemr
Copy link
Member

juliemr commented Sep 15, 2016

As discussed offline:

To simplify the story for TypeScript users and eliminate confusion about globals, export global singletons from protractor instead of protractor/globals.

Before:

import {browser, element} from 'protractor/globals';
import {ElementFinder} from 'protractor';

describe('my app', () => {
  myElement: ElementFinder;

  beforeEach(() => {
    browser.get('example.com');
    myElement = element(by.css('foo'));
  });
});

After

import {browser, element, ElementFinder} from 'protractor';

describe('my app', () => {
  myElement: ElementFinder;

  beforeEach(() => {
    browser.get('example.com');
    myElement = element(by.css('foo'));
  });
});

The configuration option noGlobals will continue to do the same thing - if true, Protractor will only define global.protractor, otherwise, it will define all of global.protractor, global.browser, global.element, global.by, global.$, global.$$. Whether it is enabled or not should have no effect on TS users.

juliemr added a commit to juliemr/protractor that referenced this issue Sep 16, 2016
…globals to protractor

Breaking change for TypeScript:

Instead of importing globals like `browser` from `protractor/globals`, import from `protractor`.

Before:

```ts
import {browser, element} from 'protractor/globals';
import {ElementFinder} from 'protractor';

describe('my app', () => {
  myElement: ElementFinder;

  beforeEach(() => {
    browser.get('example.com');
    myElement = element(by.css('foo'));
  });
});
```

After

```ts
import {browser, element, ElementFinder} from 'protractor';

describe('my app', () => {
  myElement: ElementFinder;

  beforeEach(() => {
    browser.get('example.com');
    myElement = element(by.css('foo'));
  });
});
```

Closes angular#3564
cnishina pushed a commit that referenced this issue Sep 16, 2016
#3565)

Breaking change for TypeScript:

Instead of importing globals like `browser` from `protractor/globals`, import from `protractor`.

Before:

```ts
import {browser, element} from 'protractor/globals';
import {ElementFinder} from 'protractor';

describe('my app', () => {
  myElement: ElementFinder;

  beforeEach(() => {
    browser.get('example.com');
    myElement = element(by.css('foo'));
  });
});
```

After

```ts
import {browser, element, ElementFinder} from 'protractor';

describe('my app', () => {
  myElement: ElementFinder;

  beforeEach(() => {
    browser.get('example.com');
    myElement = element(by.css('foo'));
  });
});
```

Closes #3564
@thorn0
Copy link
Contributor

thorn0 commented Oct 22, 2016

Why not make browser, element, etc global in TS as well?

@Harshaec021
Copy link

@thorn0 I think you can do so by using typings. I mean by installing type script definitons

@djom202
Copy link

djom202 commented Feb 11, 2019

Hi @juliemr, I'd like to know how I can define those globals vars on protractor with typescript, do you have any guide fo that? since right now I'm facing this issue: [ts] Property 'appId' does not exist on type 'Global'. [2339]

My code:
global.appId = null

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

No branches or pull requests

4 participants