Currently, I am in the process of writing end-to-end tests for a non-angular application using Protractor. While there is a wealth of information available on how to achieve this, it appears that there are multiple approaches to consider. This has led me to ponder some fundamental questions.
When testing non-angular websites, some individuals recommend solely utilizing webdriver calls, such as 'browser.driver.get()', to prevent Protractor from waiting for Angular to finish loading on a page. On the other hand, alternative suggestions propose setting browser.ignoreSynchronization = true and carrying out browser.get() calls without any issues (this seems like an optimal solution for handling both angular and non-angular scenarios). Are these two methods equivalent? If not, could you please elaborate on the discrepancies?
While working with webdriver or when setting browser.ignoreSynchronization = true, does Protractor still honor promises? For instance, if I initiate a 'get' call, will Protractor postpone executing the subsequent step until the 'get' request is completed?
In connection with point #2, is it necessary to utilize promise chaining when interacting with webdriver/non-angular applications to ensure that user actions are carried out sequentially? For example, should I nest the click() function inside sendKeys().then when entering a name and then submitting information?
How does webdriver precisely determine when all elements on a page are ready following a get request (most solutions involve utilizing a timeout or verifying the existence of an element first)? What if the page contains embedded applications (like a Google map) and I wish to simulate a user clicking on 'view larger map' during my end-to-end test?