title: Why do I need to use waitForAngular(false) & browser.sleep(3000)?
body: <p>We have a website that is built 100% from Angular and I was asked to use Protractor to write an end to end testing. Now encountered a problem that if I do not use <code>waitForAngular(false)</code> and <code>browser.sleep(3000)</code> then my test fails even I used the <code>ExpectedCondition</code>.</p>
  
  <p>So here is my Scenario:</p>
  
  <p>In the login page, I can find all elements, send keys to the input box and login. But after login, it fails. It cannot find any element, click any element at all. </p>
  
  <p>My Code looks like this.</p>
  
  <pre><code>describe("/profile", () =&gt; {
    let page: Profile;
  
    beforeAll(async () =&gt; {
      page = await login(Profile, user, login);
      await browser.wait(ExpectedConditions.presenceOf(page.element));
      await navigate(path.profile)
    })
  
    afterAll(async () =&gt; {
      logout();
    })
  
    it("should have navigate to the page", async () =&gt; {
      expect(await browser.getCurrentUrl()).toContain("/profile");
    });
  
    it("should have correct page markup", async () =&gt; { 
  // this test fails without waitForAngular(false)
  // or browser.sleep(3000) in the navigation or OnPrepare in the config
      expect(await page.headerTitle.isDisplayed()).toBe(true);
      expect(await page.headerTitle.getText()).toContain("Profile")
    })
  })
  </code></pre>
  
  <p>What am I doing wrong?</p>