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

Make welcome screen disabling first action in loginIfPrompted #68238

Merged
merged 1 commit into from
Jun 5, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions test/functional/page_objects/common_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,17 +67,17 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo
* @param appUrl Kibana URL
*/
private async loginIfPrompted(appUrl: string, insertTimestamp: boolean) {
// Disable the welcome screen. This is relevant for environments
// which don't allow to use the yml setting, e.g. cloud production.
// It is done here so it applies to logins but also to a login re-use.
await browser.setLocalStorageItem('home:welcome:show', 'false');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it a problem only for the case of login? Maybe it is better to set it up after driver instance is created?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking if the Kibana home page can have some attribute stating it is running on cloud..

Copy link
Member Author

@pheyos pheyos Jun 5, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My first idea was to put this logic into beforeTestSuite, which would be similar to a setup after driver instance creation. But at that stage the browser storage can't be set:

Storage is disabled inside 'data:' URLs.

So we basically need some actual URL loaded before we can set this, which makes it harder to find a good place for this logic as the entry points can be very different.
The login page seemed to be a good place as cloud testing always involves a login. But
a) we have two different page objects handling the login page. This could be handled by adding the logic to both of them.
b) tests that start with the navigation to an app will re-use an existing login and don't involve the login page. But the browser storage is still cleared between test suites, so the welcome screen is enabled again.

Not sure if an attribute to identify cloud usage on the welcome page solves the issues, since we still need to handle it and there are a lot of pathes that could lead to a displayed welcome page. IMO having something like closeWelcomePageIfNeeded and calling it from all relevant places would be a better solution than trying to disable the page via the browser storage. But calling it from all relevant places is the tricky part here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, let's keep it this way for now


let currentUrl = await browser.getCurrentUrl();
log.debug(`currentUrl = ${currentUrl}\n appUrl = ${appUrl}`);
await testSubjects.find('kibanaChrome', 6 * defaultFindTimeout); // 60 sec waiting
const loginPage = currentUrl.includes('/login');
const wantedLoginPage = appUrl.includes('/login') || appUrl.includes('/logout');

// Disable the welcome screen. This is relevant for environments
// which don't allow to use the yml setting, e.g. cloud production.
// It is done here so it applies to logins but also to a login re-use.
await browser.setLocalStorageItem('home:welcome:show', 'false');

if (loginPage && !wantedLoginPage) {
log.debug('Found login page');
if (config.get('security.disableTestUser')) {
Expand Down