0

Add a switch to disable web-app-internals logging in PWA browser tests

The default behavior is not changed, but now developers have the option
to disable the chrome://web-app-internals logging on PWA browser tests
using the new flag.

Change-Id: I861450c60bed342eff2c3b6107b027c46fd1b73f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4781796
Commit-Queue: Zelin Liu <zelin@chromium.org>
Reviewed-by: Dibyajyoti Pal <dibyapal@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1184238}
This commit is contained in:
Zelin Liu
2023-08-16 17:47:01 +00:00
committed by Chromium LUCI CQ
parent c151a0e866
commit fc9a90d28d
2 changed files with 19 additions and 0 deletions
chrome/browser/web_applications/test
docs/webapps

@ -4,7 +4,9 @@
#include "chrome/browser/web_applications/test/debug_info_printer.h"
#include "base/command_line.h"
#include "base/run_loop.h"
#include "base/strings/string_piece_forward.h"
#include "base/test/bind.h"
#include "base/time/time.h"
#include "chrome/browser/profiles/profile.h"
@ -21,9 +23,17 @@
#endif
namespace web_app::test {
namespace {
constexpr base::StringPiece kDisableLogDebugInfoToConsole =
"disable-web-app-internals-log";
} // namespace
void LogDebugInfoToConsole(const std::vector<Profile*>& profiles,
base::TimeDelta time_ago_for_system_log_capture) {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
kDisableLogDebugInfoToConsole)) {
return;
}
for (Profile* profile : profiles) {
if (!AreWebAppsEnabled(profile) ||
!WebAppProviderFactory::IsServiceCreatedForProfile(profile)) {

@ -32,6 +32,7 @@ Notes
- UI elements do not work in unit tests, and the appropriate fakes must be used (see [External Dependencies][3]).
- If one of the external dependencies of the system cannot be faked out yet or the feature is tightly coupled to this, then it might make sense to use a browser test instead (or make that dependency fake-able).
- Please use the [`WebAppTest`][4] base class if possible.
- Unit tests based on `WebAppTest` print a snapshot of chrome://web-app-internals to console on test failures. This can be a powerful debugging tool. The command line flag `--disable-web-app-internals-log` can be used to disable this feature.
## Browser tests
@ -46,12 +47,20 @@ Browser tests are much more expensive to run, as they run a fully functional bro
An example set of browser tests are in [`web_app_browsertest.cc`][6]. Please use the [`WebAppControllerBrowserTest`][5] base class.
Notes
- Browser tests based on `WebAppControllerBrowserTest` print a snapshot of chrome://web-app-internals to console on test failures. This can be a powerful debugging tool. The command line flag `--disable-web-app-internals-log` can be used to disable this feature.
## Integration tests
We have a custom integration testing framework that we use due to the complexity of our use-cases. See [integration-testing-framework.md][7] for more information.
**It is a good idea to think about your integration tests early & figure out your CUJs with the team. Having your CUJs and integration tests working early greatly speeds up development & launch time.**
Notes
- Integration tests using `WebAppIntegrationTestDriver` print a snapshot of chrome://web-app-internals to console on test failures. This can be a powerful debugging tool. The command line flag `--disable-web-app-internals-log` can be used to disable this feature.
## Testing OS integration
It is very common to test OS integration. By default, OS integration is suppressed if the test extends [`WebAppTest`][4] or [`WebAppControllerBrowserTest`][5].