Getting rid of the Chrome "What's new" tab for profiles (or copies) instantiated by ChromeDriver

Hello,

We are big fans of @kazurayam’s Chrome Profile Factory (CPF).
We are using it through many test cases / suites / collections.

In short, when executing such a test case, Katalon operates on a (temporary) “copy” of an existing Chrome profile, with some specific pre-existing setup. This works very well.

Our target machine is now running Chrome 98.

We have been experiencing a weird issue, leading to unexpected KOs.

When manually opening one “source” Chrome profile, we just get one empty tab. Very normal.

When Katalon opens a “copy” of this Chrome profile (instantiated by the CPF), its gets two tabs: First, the infamous “What’s new” tab (chrome://whats-new/); second, an empty tab.

Then Katalon operates on the second tab. In this tab, it seems to does what it is asked to do… until it can’t. More specifically, it seems that:
(a) most of Katalon’s WebUI convenient functions are smart enough to understand which tab that they are expected to operate on.
(b) but some functions are not smart enough. So, typically, Katalon logs that it has clicked on some button, but it has not… and then it complains that the next screen is not displayed as expected.

One funny detail: if you cease to be a passive observer, and click on the second tab while Katalon is working, this helps Katalon. Of course, this does not solve the issue.

We are in the process of making sure that we use only functions of the (a) category. We’ll say more on this thread when we have confirmation.

Has anybody experienced something similar?

Is there any way to tell the ChromeDriver that it must not display the “What’s new” tab?

The last funny thing is that, in our experience, the “What’s new” tab is not always displayed… For some profiles it is; for other profiles it is not. Depending on your perspective, it’s very funny or very weird or very annoying.

Many cheers,
– Michel

seems like this page can be toggled on/of through a chrome flag:

Thanks for mentioning my name, but I don’t know what it is. Which GitHub repository of mine are you using?

I have already abandomed the “WebDriverFactory4ks” project. I won’t maintain this any longer.


Instead, I have created a better one.

The API (class names, method names, parameters) has been significantly changed from the previous project. No backward compatibility considered.

In this new project, I have fixed most of the problems/questions found the previous project. For example, you can carry over cookies from a previous HTTP session to the next session via a User profile. This means, you can do the following:

1 you want to manually open Chrome browser with a User profile, visit a URL which can send some cookies.
2. do some interactions with the URL and receive cookies. E.g, login with credentials while accepting one time password etc.
3. close Chrome browser. ---- the 1st session done
4. your script open Chrome again by webdriver specifying the same User profile with ChromeDriverFactory.UserDataAccess.TO_GO option.
5. your script can use the cookie stored in the User profile during the previous session

You would be able to find how to use it in the sample code as follows.

2 Likes

As for “What’s new” tab problem, using the new “chromeDriverFactory” lib, you can possibly fix it by

  1. chose a Chrome user profile to use for Katalon Testing
  2. manually open Chrome with that user profile
  3. manually toggle off the “Show Chrome What’s News page xxxx”
  4. close Chrome. ---- the user profile should have memorised that you want “toggle it off”
  5. in the test, using chromeDriverFactory, open Chrome with the user profile specifying UserDataAccess.TO_GO, which will make a copy of profile directory from the original where "toggle off " option is recorded.

If you have 2 or more user profiles to use for chromedriver, you need to do this settings on all of them each.

If you have 2 or more machines, you need to do this setting on all of them each.

I examined my guess, and failed.


ChromeDriver generated the following command to start Chrome:

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --allow-pre-commit-input --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-gpu --disable-hang-monitor --disable-infobars --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disableExtensions --enable-automation --enable-blink-features=ShadowDOMV0 --enable-logging --log-level=0 --no-first-run --no-sandbox --no-service-autorun --password-store=basic --profile-directory=Profile 14 --remote-debugging-port=0 --test-type=webdriver --use-mock-keychain --user-data-dir=/var/folders/7m/lm7d6nx51kj0kbtnsskz6r3m0000gn/T/__user-data-dir__7501750884155054730 --window-size=1024,768 --flag-switches-begin --flag-switches-end

At the tail of command found

 --flag-switches-begin --flag-switches-end

This seems to be relevant to “chrome://flags”
But I can not find the name to disable “What’s new”


·1 day ago
Fortunately I found the Chrome Beta does not have this issue, so visit the download page and choose the Beta option. However, it doesn’t just replace your existing chrome. It’s a second/unique Chrome installation, so you’ll want to change your default browser from Chrome to Chrome Beta. Optionally uninstall Chrome and keep Chrome Beta to ensure no confusion.

As for “What’s new”, Chrome might be buggy. There might be no way to workaround except Chrome changes its behavior.

Hello,

Thanks for your insights.

We have made the same observations, and we have not found a fully satisfactory workaround. There is no way to systematically avoid this unwanted, irrelevant tab.
Do you think the issue comes from Chrome 98 itself, or from ChromeDriver 98.0.4758.102, or from an upper layer?

Maybe waiting for Chrome 99 is the only reasonable approach, even it’s intellectually frustrating.

Cheers,
– Michel

@michelg

Have you tried this?

chromeOptions.AddArgument("--disable-features=ChromeWhatsNewUI") 
1 Like

I think it is only lack of reading.
As far as I know, any chrome/chromium flag can be passed through capabilities (args more specifically, see what @Russ_Thomas suggested otherwise stackoverflow may be your friend)

Hello @Russ_Thomas,
This seems to work on a unit test.
I will keep you posted if this works for an entire test run.
Thanks a lot!!! :slight_smile:
Cheers,
–Michel

1 Like

Hello again @Russ_Thomas,
It worked on entire test runs. Very cool.
Thanks again,
–Michel

1 Like