Coder Social home page Coder Social logo

accessibility-test-framework-for-android's Introduction

Accessibility Test Framework for Android

To help people with disabilities access Android apps, developers of those apps need to consider how their apps will be presented to accessibility services. Some good practices can be checked by automated tools, such as if a View has a contentDescription. Other rules require human judgment, such as whether or not a contentDescription makes sense to all users.

For more information about Mobile Accessibility, see http://www.w3.org/WAI/mobile/.

This library collects various accessibility-related checks on View objects as well as AccessibilityNodeInfo objects (which the Android framework derives from Views and sends to AccessibilityServices).

Building the Library

The supplied gradle wrapper and build.gradle file can be used to build the Accessibility Test Framework or import the project into Android Studio.

$ ./gradlew build

Sample Usage

Given a view, the following code runs all accessibility checks on all views in the hierarchy rooted at that view and throws an exception if any errors are found:

ImmutableSet<AccessibilityHierarchyCheck> checks =
    AccessibilityCheckPreset.getAccessibilityHierarchyChecksForPreset(
        AccessibilityCheckPreset.LATEST);
AccessibilityHierarchyAndroid hierarchy = AccessibilityHierarchyAndroid.newBuilder(view).build();
List<AccessibilityHierarchyCheckResult> results = new ArrayList<>();
for (AccessibilityHierarchyCheck check : checks) {
  results.addAll(check.runCheckOnHierarchy(hierarchy));
}
List<AccessibilityHierarchyCheckResult> errors =
    AccessibilityCheckResultUtils.getResultsForType(
        results, AccessibilityCheckResultType.ERROR);
if (!errors.isEmpty()) {
  throw new RuntimeException(errors.get(0).getMessage().toString());
}

accessibility-test-framework-for-android's People

Contributors

alexbeggs avatar brettchabot avatar caseyburkhardt avatar coopercorona avatar oknirb avatar pweaver-google avatar utzcoz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

accessibility-test-framework-for-android's Issues

Jetpack compose compatibility

This library works perfectly with a View based application.

But, not at all with jetpack compose.

Is there any plan to support it?

A question about accessibility testing with TalkBack

Hello.
My name is Hyongsop Kim from Korea and my main job is Accessibility Testing.
Originally, the question should be left in the TalkBack GitHub repository, but there is no menu for registering issues in the repository, so I was forced to leave a question here. Please excuse me.
As you know, the updated version 8.1 source code of TalkBack was released in February this year.
But when I downloaded the released version of the source code, I found out that the sample demo app for testing TalkBack has disappeared.
The app provided various screens to test how TalkBack responds in each view or method, and I am so sorry that the app is missing.
So is there any way I can download the source code of the app again?
I often have to offer Android developers a solution to improve accessibility.
If I suggest the method and show the developers a demo app that TalkBack responds to the method, it will give them a little more understanding of accessibility.
So I really need a demo app. Please reply.

Add Sample and Run Tests in Google Action Workflow

Wouldn't it make sense to run ATF checks as part of the main GHA workflow?

  1. Add sample app to ATF
  2. Add ATF Checks in 1-3 espresso tests
  3. Run Checks in Github Action Workflow

Benefits:

  • More thoroughly tests the framework (right now we are just running ./gradlew build
  • Demonstrates use of how to add checks
  • Also shows how to get ATF checks running with espresso in a "stable" manner on GHA with Standard Github Runners (macOS or Ubuntu)

Security Policy violation Binary Artifacts

This issue was automatically created by Allstar.

Security Policy Violation
Project is out of compliance with Binary Artifacts policy: binaries present in source code

Rule Description
Binary Artifacts are an increased security risk in your repository. Binary artifacts cannot be reviewed, allowing the introduction of possibly obsolete or maliciously subverted executables. For more information see the Security Scorecards Documentation for Binary Artifacts.

Remediation Steps
To remediate, remove the generated executable artifacts from the repository.

Artifacts Found

  • gradle/wrapper/gradle-wrapper.jar

Additional Information
This policy is drawn from Security Scorecards, which is a tool that scores a project's adherence to security best practices. You may wish to run a Scorecards scan directly on this repository for more details.


Allstar has been installed on all Google managed GitHub orgs. Policies are gradually being rolled out and enforced by the GOSST and OSPO teams. Learn more at http://go/allstar

This issue will auto resolve when the policy is in compliance.

Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

When is the planned 3.1 release?

I see that 2.1 is the last release to the Maven repositories, but that was December 2015. When is the next release to the Maven repos?

Please shade copied in classes

We are not able to update to 3.1 due to duplicate class errors resulting from this library's packaged copies of checkerframework classes.

1-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nChecksFormat found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nConversionCategory found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nFormat found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nFormatBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nFormatFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nInvalidFormat found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nMakeFormat found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nUnknownFormat found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.i18nformatter.qual.I18nValidFormat found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.EnsuresLTLengthOf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.EnsuresLTLengthOfIf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.GTENegativeOne found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.HasSubsequence found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.IndexFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.IndexOrHigh found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.IndexOrLow found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LTEqLengthOf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LTLengthOf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LTOMLengthOf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LengthOf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LessThan found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LessThanBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LessThanUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LowerBoundBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.LowerBoundUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.NegativeIndexFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.NonNegative found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.PolyIndex found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.830Z]      Duplicate class org.checkerframework.checker.index.qual.PolyLength found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.PolyLowerBound found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.PolySameLen found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.PolyUpperBound found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.Positive found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SameLen found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SameLenBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SameLenUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SearchIndexBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SearchIndexFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SearchIndexUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SubstringIndexBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SubstringIndexFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.SubstringIndexUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.UpperBoundBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.index.qual.UpperBoundUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.initialization.qual.FBCBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.initialization.qual.Initialized found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.initialization.qual.NotOnlyInitialized found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.initialization.qual.UnderInitialization found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.initialization.qual.UnknownInitialization found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.interning.qual.InternMethod found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.interning.qual.Interned found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.interning.qual.InternedDistinct found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.interning.qual.PolyInterned found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.interning.qual.UnknownInterned found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.interning.qual.UsesObjectEquals found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.EnsuresLockHeld found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.EnsuresLockHeldIf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.GuardSatisfied found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.GuardedBy found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.GuardedByBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.GuardedByUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.Holding found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.LockHeld found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.LockPossiblyHeld found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.831Z]      Duplicate class org.checkerframework.checker.lock.qual.LockingFree found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.lock.qual.MayReleaseLocks found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.lock.qual.ReleasesNoLocks found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.NullnessUtil found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.Opt found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.AssertNonNullIfNonNull found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.EnsuresKeyFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.EnsuresKeyForIf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.EnsuresNonNull found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.EnsuresNonNullIf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.KeyFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.KeyForBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.MonotonicNonNull found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.NonNull found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.Nullable found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.PolyKeyFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.PolyNull found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.RequiresNonNull found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.nullness.qual.UnknownKeyFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.optional.qual.MaybePresent found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.optional.qual.PolyPresent found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.optional.qual.Present found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.propkey.qual.PropertyKey found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.propkey.qual.PropertyKeyBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.propkey.qual.UnknownPropertyKey found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.RegexUtil found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.RegexUtil$CheckedPatternSyntaxException found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.qual.PartialRegex found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.qual.PolyRegex found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.qual.Regex found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.qual.RegexBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.regex.qual.UnknownRegex found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.signature.qual.BinaryName found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.signature.qual.ClassGetName found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.signature.qual.ClassGetSimpleName found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.signature.qual.DotSeparatedIdentifiers found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.832Z]      Duplicate class org.checkerframework.checker.signature.qual.FieldDescriptor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.FieldDescriptorForPrimitive found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.FqBinaryName found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.FullyQualifiedName found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.Identifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.InternalForm found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.MethodDescriptor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.PolySignature found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.SignatureBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signature.qual.SignatureUnknown found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.SignednessUtil found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.SignednessUtilExtra found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.PolySigned found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.Signed found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.SignedPositive found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.SignednessBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.SignednessGlb found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.UnknownSignedness found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.signedness.qual.Unsigned found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.tainting.qual.PolyTainted found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.tainting.qual.Tainted found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.tainting.qual.Untainted found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.UnitsTools found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.A found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Acceleration found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Angle found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Area found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.C found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Current found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.K found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Length found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Luminance found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Mass found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.MixedUnits found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.PolyUnit found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Prefix found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Speed found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Substance found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.833Z]      Duplicate class org.checkerframework.checker.units.qual.Temperature found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.Time found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.UnitsBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.UnitsMultiple found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.UnitsRelations found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.UnknownUnits found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.cd found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.degrees found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.g found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.834Z]      Duplicate class org.checkerframework.checker.units.qual.h found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.kg found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.km found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.km2 found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.kmPERh found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.m found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.m2 found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.mPERs found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.mPERs2 found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.min found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.mm found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.mm2 found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.mol found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.radians found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.checker.units.qual.s found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.aliasing.qual.LeakedToResult found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.aliasing.qual.MaybeAliased found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.aliasing.qual.MaybeLeaked found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.aliasing.qual.NonLeaked found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.aliasing.qual.Unique found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.ClassBound found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.ClassVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.ClassValBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.ForName found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.GetClass found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.GetConstructor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.GetMethod found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.Invoke found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.MethodVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.MethodValBottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.NewInstance found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.UnknownClass found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.836Z]      Duplicate class org.checkerframework.common.reflection.qual.UnknownMethod found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.subtyping.qual.Bottom found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.subtyping.qual.Unqualified found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportCall found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportCreation found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportInherit found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportOverride found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportReadWrite found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportUnqualified found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportUse found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.util.report.qual.ReportWrite found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.ArrayLen found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.ArrayLenRange found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.BoolVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.BottomVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.DoubleVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.EnsuresMinLenIf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.IntRange found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.IntRangeFromGTENegativeOne found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.IntRangeFromNonNegative found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.IntRangeFromPositive found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.IntVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.MinLen found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.MinLenFieldInvariant found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.PolyValue found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.StaticallyExecutable found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.StringVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.common.value.qual.UnknownVal found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.dataflow.qual.Deterministic found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.dataflow.qual.Pure found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.dataflow.qual.Pure$Kind found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.dataflow.qual.SideEffectFree found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.dataflow.qual.TerminatesExecution found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.framework.qual.AnnotatedFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.framework.qual.CFComment found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.837Z]      Duplicate class org.checkerframework.framework.qual.ConditionalPostconditionAnnotation found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.Covariant found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.DefaultFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.DefaultQualifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.DefaultQualifierForUse found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.DefaultQualifierInHierarchy found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.EnsuresQualifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.EnsuresQualifierIf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.FieldInvariant found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.FromByteCode found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.FromStubFile found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.IgnoreInWholeProgramInference found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.InheritedAnnotation found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.InvisibleQualifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.JavaExpression found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.LiteralKind found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.MonotonicQualifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.NoDefaultQualifierForUse found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.PolymorphicQualifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.PostconditionAnnotation found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.PreconditionAnnotation found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.QualifierArgument found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.QualifierForLiterals found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.RelevantJavaTypes found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.RequiresQualifier found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.StubFiles found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.SubtypeOf found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.TargetLocations found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.TypeKind found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.TypeUseLocation found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.Unused found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.qual.UpperBoundFor found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

[2021-01-09T02:12:05.838Z]      Duplicate class org.checkerframework.framework.util.PurityUnqualified found in modules checker-3.1 (org.checkerframework:checker:3.1.1) and checker-qual-3.7.0 (org.checkerframework:checker-qual:3.7.0)

Run code doesn't pass

I'm having trouble running. Can't run.

import com.google.android.apps.common.testing.accessibility.framework.proto.

Can anyone help me?

There is a reward of 300-500$.

usage

Can anyone kindly guide me about how to use this framework in actual project?

False Positive for SpeakableTextPresentCheck in RecyclerView

In some tests we are seeing:

View my_recycler_view: This item may not have a label readable by screen readers. Reported by com.google.android.apps.common.testing.accessibility.framework.checks.SpeakableTextPresentCheck

Looking into the code the problem seems like this is happening because a RecyclerView doesn't have a content description, but my understanding is that we should not have to manually add a content description to a RecyclerView. Is this a bug in this library, or is there a recommendation for manually making RecyclerView accessible.

Espresso AccessibilityChecks: Toggle for warnings rather than errors when Accessibility issues found?

Hello, I made an Issue report on AOSP but feel that this is a more appropriate location to post this feature request. You can view my AOSP issue here.

In short, it would be nice to toggle between errors and warnings when accessibility issues are found during automated tests. Currently, only errors are thrown when a view does not pass accessibility checks, which means tests fail. This is especially problematic when using .setRunChecksFromRootView(true); to check all views on the screen and not simply views being interacted with.

Suppressing errors on certain views is certainly an option but it is not very scalable. Warnings would be nice so that the developer can then use their discretion on how to fix any issues, while still ensuring that their UI tests are functioning correctly.

Accessibility Scanner

can anyone give me link to the source code of Accessibility scanner or to the repo of someone who is working on Android accessibility.

Error in the build Accessibility-Test-Framework-for-Android 3.0

Hello,

I was trying to make a sample project with the project and noticed that the newer version is not yet available on maven. Because of this I downloaded the newest project and imported it as a module into my test project in Android Studio. But when trying to run it it has the following compilation error:

Error:com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\rlco\Desktop\POC_Acessibilidade_R13\app\build\intermediates\transforms\instantRunSlicer\debug\4
Error:com.android.dx.cf.code.SimException: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)
Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\rlco\Desktop\POC_Acessibilidade_R13\app\build\intermediates\transforms\instantRunSlicer\debug\4
Error:com.android.builder.dexing.DexArchiveBuilderException: Error while dexing com/google/android/apps/common/testing/accessibility/framework/ClusteringUtils.class

Can anybody help me ? @pweaver-google @caseyburkhardt

Integration with Android Lint

Hi,
Can't this feature be integrated with Android Lint Tool and it can do it as part of static code analysis ..

That way i don't need to run any test .

TouchTargetSizeCheck should keep padding into account as well.

This might be a naive question/statement but at first glance it does make sense to me.

I'm curious why the TouchTargetSizeCheck doesn't take into account padding of the view, I feel that it should since this would also enlarge the tap area of a view.

ATF used with FragmentScenario breaks testing process

Even the most simple of test app I can make is unable to use ATF at its latest version (at the same time as FragmentScenario anyway).
I made a simple demo project to repro the bug: https://github.com/niehusstaab/ATF_bug_demo/tree/master

Attempting to run a basic Espresso test that uses FragmentScenario always results in the following error:

java.lang.NoSuchMethodError: No virtual method shouldWaitForActivitiesToComplete()Z in class Landroidx/test/runner/AndroidJUnitRunner; or its super classes (declaration of 'androidx.test.runner.AndroidJUnitRunner' appears in /data/app/com.example.myapplication.test-up9qel7XQQdGcgyDX4V36A==/base.apk)
        at androidx.test.runner.AndroidJUnitRunner.addListenersLegacyOrder(AndroidJUnitRunner.java:442)
        at androidx.test.runner.AndroidJUnitRunner.addListeners(AndroidJUnitRunner.java:423)
        at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:391)
        at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2189)

Is this a library incompatibility? Or is there some other underlying issue w/in ATF?

Migrate to protobuf-javalite

I have firebase-perf and espresso-contrib (which has dependency on this library) in same classpath so gradle cannot build my project because of duplicate classes from com.google.protobuf:protobuf-lite (from this lib) and com.google.protobuf:protobuf-javalite (from firebase-perf)

Here is the issue why firebase-perf migrated to javalite

So after u update this lib espresso team also need post a new version with updated deps
And after all @Sloy(or someone else from barista team) should update barista and then I'll can assemble my project :)
(@Sloy I mention you because latest update(4.1.0) with updating espresso became breaking)

Make it possible to disable Accessibility checks

As far as I can tell, it isn't possible to disable the accessibility checks once they are enabled. This makes it impossible to use for a subset of tests.

Adding a method like AccessibilityChecks.disable() would make it possible to add the accessibility checks to cover specific tests, rather than the whole suite.

Documentation is wrong

These checks are actually for AccessibilityEvent not node infos.

  /**
   * @param preset The preset of interest
   * @return A set of all checks for {@code AccessibilityNodeInfo}s with scopes for the preset
   */
  public static Set<AccessibilityEventCheck>
      getEventChecksForPreset(AccessibilityCheckPreset preset) {

Publish to maven.google.com?

In our Android projects I started to use rules to match artifact groups to repositories to prevent fetching potentially malicious clones from public repositories like jcenter.

I have bound most Google/Android/AndroidX artifacts to be only fetched from maven.google.com. However I noticed that com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework could no longer be resolved (as a transitive dependency of robolectric, I assume) since it it not available there (but on jcenter and maven central).

Are there any plans to release this framework on maven.google.com?

TextInputLayout / TextInputEditText fail accessibility scans

Build: AI-203.6682.168.2031.7101492, 202101251652,

AI-203.6682.168.2031.7101492, JRE 11.0.8+10-b944.6842174x64 JetBrains s.r.o, OS Mac OS X(x86_64) v10.15.7, screens 5120.0x2880.0, 3384.0x6016.0, 3360.0x2100.0; Retina

AS: Arctic Fox | 2020.3.1 Canary 5; Kotlin plugin: 1.4.21-release-Studio4.2-1; Android Gradle Plugin: 7.0.0-alpha05; Gradle: 6.8; NDK: from local.properties: (not specified), latest from SDK: (not found); LLDB: LLDB 3.1 (revision: 3.1.4508709); CMake: from local.properties: (not specified), latest from SDK: (not found), from PATH: (not found)

TextInputLayout with a TextInputEditText inside it does not pass accessibility scans.

Create a sample project with the following:

app.gradle

  implementation 'com.google.android.material:material:1.2.1'
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha03'
  androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.4.0-alpha03'

ExampleInstrumentedTest

@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
    @Rule
    @JvmField
    var rule: ActivityScenarioRule<*> = ActivityScenarioRule(MainActivity::class.java)


    @Test
    fun justLoadHome() {
        AccessibilityChecks.enable()
        onView(withId(R.id.input_field)).perform(typeText("A - B - C"))
    }
}

MainActivity.kt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val inputLayout = findViewById<TextInputLayout>(R.id.input_layout)
        inputLayout.hint = "A hint!"

        val inputField = findViewById<TextInputEditText>(R.id.input_field)
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.textfield.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:id="@+id/input_layout"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:labelFor="@id/input_field"
        android:hint="A hint!"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent">
        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/input_field"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Then, run the test. It will fail with an accessibility issue:

com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityViewCheckException: There was 1 accessibility result:
TextInputEditText{id=2131230901, res-name=input_field, visibility=VISIBLE, width=300, height=54, has-focus=true, has-focusable=true, has-window-focus=false, is-clickable=true, is-enabled=true, is-focused=true, is-focusable=true, is-layout-requested=false, is-selected=false, layout-params=android.widget.FrameLayout$LayoutParams@ca43d75, tag=null, root-is-layout-requested=false, has-input-connection=true, editor-info=[inputType=0x20001 imeOptions=0x40000006 privateImeOptions=null actionLabel=null actionId=0 initialSelStart=0 initialSelEnd=0 initialCapsMode=0x0 hintText=A hint! label=null packageName=null fieldId=0 fieldName=null extras=null ], x=0.0, y=0.0, text=, hint=A hint!, input-type=131073, ime-target=false, has-links=false}: This item may not have a label readable by screen readers. Reported by com.google.android.apps.common.testing.accessibility.framework.checks.SpeakableTextPresentCheck
at com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator.processResults(AccessibilityValidator.java:270)
at com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator.runAccessibilityChecks(AccessibilityValidator.java:228)
at com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator.checkAndReturnResults(AccessibilityValidator.java:87)
at androidx.test.espresso.accessibility.AccessibilityChecks$2.check(AccessibilityChecks.java:65)
at androidx.test.espresso.action.ViewActions$1.perform(ViewActions.java:3)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:2)
at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:22)
at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:1)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:2)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Note that the hint is being set in code & in the layout, and the error even reports that it's set, but the SpeakableTextPresentCheck still fails. TalkBack will read the hint when this code is on screen.

An unexpected SpeakableText check result

For this layout, SpeakableTextPresentCheck tells me the view of "id_test1" is RESULT_ID_SHOULD_NOT_FOCUS. In fact,talkback would focus it. Is it a bug?

<RelativeLayout
    android:id="@+id/id_test1"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:clickable="true">
    <RelativeLayout
        android:id="@+id/id_test2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/id_test3"
            android:text="foo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RelativeLayout>
</RelativeLayout>

3.1 regression

Took an early local build of master with the upcoming 3.1 changes, and unfortunately seems it's regressed for us.

java.util.MissingResourceException
at java.util.ResourceBundle.getBundle(ResourceBundle.java:327)
at com.google.android.apps.common.testing.accessibility.framework.strings.StringManager.getResourceBundle(StringManager.java:32)
at com.google.android.apps.common.testing.accessibility.framework.strings.StringManager.getString(StringManager.java:27)
at com.google.android.apps.common.testing.accessibility.framework.checks.RedundantDescriptionCheck.runCheckOnHierarchy(RedundantDescriptionCheck.java:128)
at com.google.android.apps.common.testing.accessibility.framework.AccessibilityViewHierarchyCheck.runDelegationCheckOnView(AccessibilityViewHierarchyCheck.java:101)
at com.google.android.apps.common.testing.accessibility.framework.RedundantContentDescViewCheck.runCheckOnViewHierarchy(RedundantContentDescViewCheck.java:38)
at com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator.runAccessibilityChecks(AccessibilityValidator.java:204)
at com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator.checkAndReturnResults(AccessibilityValidator.java:82)
at androidx.test.espresso.accessibility.AccessibilityChecks$2.check(AccessibilityChecks.java:65)
at androidx.test.espresso.action.ViewActions$1.perform(ViewActions.java:130)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:366)
at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:255)
at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:65)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:158)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:155)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Advance

Text.>color Black.
Enter number:
Number: benefits
=Saldo completo

Question about custom AccessibilityHierarchyCheck

Hello!

I'm looking into adding a few custom AccessibilityHierarchyChecks for my project, however I noticed that if I want to do that, I have to provide my own subclass of AccessibilityHierarchyCheckResult.
Reason is that AccessibilityHierarchyCheckResult has a private method, getChecks(), which makes sure the check is one of the presets from AccessibilityCheckPreset.CLASS_TO_HIERARCHY_CHECK, by calling AccessibilityCheckPreset.getHierarchyCheckForClass(...).

I'm wondering if it's possible to decouple the two: AccessibilityHierarchyCheckResult and AccessibilityCheckPreset.

I understand that the current pattern makes it possible to instantiate checks only once, and thus allows access to them through a singleton, which, in turns, uses a variation of the service locator pattern. Is it possible, for example, to add another layer of indirection, for example, a singleton called AccessibilityChecksAggregator, which can be configured to take in the preset or a custom set of checks before tests run?

P.S.: I'm not adding a Contributor License Agreement since I'm not contributing with any code or any tangible value, at least not yet.

ATF framework is not able to identify Resource

I am this ATF framework in my project. With library, I am able to successfully identify the Accessibiliy violation. But after identifying the violation, the code is trying to return the link with violation details. Here at this step, the library is failing and giving Resource Not Found exception for any language selected. I am attaching the exception below. Please look into it and respond.

java.util.MissingResourceException: Can't find bundle for base name com.google.android.apps.common.testing.accessibility.framework.strings, locale en
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1558)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1381)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at java.util.ResourceBundle.getBundle(ResourceBundle.java:1300)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.strings.StringManager.getResourceBundle(StringManager.java:33)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.strings.StringManager.getString(StringManager.java:27)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.checks.SpeakableTextPresentCheck.generateMessageForResultId(SpeakableTextPresentCheck.java:148)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.checks.SpeakableTextPresentCheck.getMessageForResultData(SpeakableTextPresentCheck.java:125)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheck.getMessageForResult(AccessibilityHierarchyCheck.java:74)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheckResult.getRawMessage(AccessibilityHierarchyCheckResult.java:129)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheckResult.getMessage(AccessibilityHierarchyCheckResult.java:143)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at service.FloatingCircle.onAccessibilityEvent(FloatingCircle.java:442)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at android.accessibilityservice.AccessibilityService$2.onAccessibilityEvent(AccessibilityService.java:1561)
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:1747)

Exception: "java.util.MissingResourceException: Can't find bundle for base name com.google.android.apps.common.testing.accessibility.framework.strings, locale en
2019-12-26 12:25:32.595 11773-11773/com.example.systemoverlaydemo W/System.err: at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1558)"

facing the same exception of any language selection.

Use of Accessibility Test Framework

How do I run this for an apk of the app that I have created in some other language?
Can you mention the steps as to how to implement this project

TextContrastCheck does not run on TextView with Compose Origin

The TextContrastCheck is returning with a ResultType of AccessibilityCheckResultType.NOT_RUN on any ViewHierarchyElement with a class name of TextView and a COMPOSE Origin. The Result ID is RESULT_ID_COULD_NOT_GET_TEXT_COLOR. The textColor value in ViewHierarchyElement is null.

This is occurring with version 4.1.1.

TextContrastCheck not handling TextInputLayout.boxStrokeColor correctly

A false positive warning by TextContrastCheck is observed when using TextInputLayout from com.google.android.material:material. The check treats box stroke color as a foreground color. By default the box stroke color is transluscent, making it likely to trigger the warning.

Reproduction

Given a blank project from Android Studio's Empty Activity template and the following layout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.textfield.TextInputLayout
        android:padding="24dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Hello World!">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true" />

    </com.google.android.material.textfield.TextInputLayout>

</FrameLayout>

A warning is produced with the following output:

πŸ“ accessibility-test-framework 4.1.1

AccessibilityViewCheckResult check=AccessibilityHierarchyCheckResult WARNING TextContrastCheck 11 [ViewHierarchyElement class=com.google.android.material.textfield.TextInputEditText bounds=Rect(0, 96 - 1080, 423)] {KEY_BACKGROUND_COLOR=-67585, KEY_CONTRAST_RATIO=4.33, KEY_FOREGROUND_COLOR=-8817538, KEY_IS_LARGE_TEXT=false, KEY_REQUIRED_CONTRAST_RATIO=4.5} num_answers:0 view=com.google.android.material.textfield.TextInputEditText{2f293a2 VFED..CL. ........ 0,0-936,167}

πŸ“ Accessibility Scanner 2.4.1.58312255

Accessibility Scanner resultShare text
The following is a list of opportunities to improve the accessibility of My Application. Each item corresponds to an outlined area on the attached screenshot.

Contrast tekst
[72,184][1008,351]
Overweeg de contrastverhouding tussen de voorgrond en achtergrond van deze afbeeldingstekst te verhogen.
De contrastverhouding van de itemtekst is 4,33. Deze verhouding is gebaseerd op de geschatte voorgrondkleur #79747E en de geschatte achtergrondkleur #FEF7FF. Overweeg de contrastverhouding van de itemtekst te verhogen naar 4,50 of hoger.

*For some reason the share text mixes English and Dutch? πŸ™ˆ Out of scope.

Negative case

Overriding the default box stroke color with a high contrast color, the warning disappears.

Layout Accessibility Scanner result

Not displaying Accessibility issues for another activity

I have basic Android app which takes input and shows it in next screen(new activity). Accessibility Scanner app shows the accessibility issue on both the screens(Main activity and also in messageDisplayActivity) but when i have tried to run via espresso test it only displays accessibility issues for Main activity screen. I have tried below code in Before class.

1: AccessibilityChecks.enable().setRunChecksFromRootView(true)

and also (to check in logcat logs)

2:AccessibilityChecks.enable().setRunChecksFromRootView(true).setThrowExceptionForErrors(false);

Since AccessibilityChecks.enable() code is in before class hence i am wondering how it can find accessibility issues for new screen when app performs a click and open a new screen? Please help.

RESULT_ID marked private in `SpeakableTextPresentCheck`

The Flutter and Compose content result id's are marked as private instead of public like all other result id's in all other checks.

They should be public to allow for easier checking of resultId's.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.