| # Copyright 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Test expectation list for WebDriver Java acceptance tests. |
| |
| It is evaluated through Python. |
| """ |
| |
| import fnmatch |
| |
| |
| _REVISION_NEGATIVE_FILTER = {} |
| _REVISION_NEGATIVE_FILTER['HEAD'] = [ |
| # Flaky: https://bugs.chromium.org/p/chromedriver/issues/detail?id=528 |
| 'PageLoadingTest.testShouldDoNothingIfThereIsNothingToGoBackTo', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2532 |
| 'SlowLoadingPageTest.testRefreshShouldBlockUntilPageLoads', |
| 'PageLoadingTest.testShouldTimeoutIfAPageTakesTooLongToRefresh', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2653 |
| 'ReferrerTest.navigationWhenProxyInterceptsASpecificUrl', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2661 |
| 'WindowTest.testSetsTheSizeOfTheCurrentWindowFromIframe', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2743 |
| 'ContentEditableTest.testShouldBeAbleToTypeIntoTinyMCE', |
| ] |
| |
| _REVISION_READY_TO_RUN_FILTER = {} |
| _REVISION_READY_TO_RUN_FILTER['HEAD'] = [ |
| # marked as not yet implemented with chrome but already works |
| ] |
| |
| _OS_NEGATIVE_FILTER = {} |
| _OS_NEGATIVE_FILTER['win'] = [ |
| ] |
| _OS_NEGATIVE_FILTER['linux'] = [ |
| ] |
| _OS_NEGATIVE_FILTER['mac'] = [ |
| ] |
| |
| _SPECIFIC_OS_REVISION_NEGATIVE_FILTER = {} |
| |
| _OS_NEGATIVE_FILTER['android:chrome'] = [ |
| 'ChromeOptionsFunctionalTest.*', |
| 'ClickScrollingTest.testShouldBeAbleToClickElementThatIsOutOfViewInANestedFrame', |
| |
| 'ClickTest.testShouldOnlyFollowHrefOnce', |
| 'CombinedInputActionsTest.testCombiningShiftAndClickResultsInANewWindow', |
| 'ElementSelectingTest.testShouldBeAbleToToggleEnabledMultiSelectOption', |
| 'FrameSwitchingTest.testShouldBeAbleToClickInAFrameThatRewritesTopWindowLocation', |
| 'JavascriptEnabledDriverTest.testShouldBeAbleToClickALinkThatClosesAWindow', |
| 'PageLoadingTest.testShouldBeAbleToAccessPagesWithAnInsecureSslCertificate', |
| 'PageLoadingTest.testShouldBeAbleToAccessPagesWithAnInsecureSslCertificate', |
| 'PageLoadingTest.testShouldBeAbleToNavigateBackInTheBrowserHistoryInPresenceOfIframes', |
| 'PageLoadingTest.testShouldFollowMetaRedirects', |
| 'PageLoadingTest.testShouldWaitForDocumentToBeLoaded', |
| 'PerformanceLogTypeTest.pageLoadShouldProducePerformanceLogEntries', |
| 'PerformanceLogTypeTest.shouldBeAbleToEnablePerformanceLog', |
| 'SelectElementHandlingTest.testShouldBePossibleToDeselectASingleOptionFromASelectWhichAllowsMultipleChoices', |
| 'SelectElementTest.shouldAllowOptionsToBeDeselectedByIndex', |
| 'SelectElementTest.shouldAllowOptionsToBeDeselectedByReturnedValue', |
| 'SelectElementTest.shouldAllowUserToDeselectAllWhenSelectSupportsMultipleSelections', |
| 'SelectElementTest.shouldAllowUserToDeselectOptionsByVisibleText', |
| 'SessionHandlingTest.callingAnyOperationAfterClosingTheLastWindowShouldThrowAnException', |
| 'SessionHandlingTest.callingQuitAfterClosingTheLastWindowIsANoOp', |
| |
| # Tests require multiple sessions, not supported on Android' |
| 'CorrectEventFiringTest.testShouldFireFocusEventInNonTopmostWindow', |
| 'PerformanceLoggingTest.testLogsSingleHttpCommand', |
| 'PerformanceLogTypeTest.shouldBeAbleToEnablePerformanceLog', |
| 'PerformanceLogTypeTest.pageLoadShouldProducePerformanceLogEntries', |
| 'ProxySettingTest.*', |
| 'CorrectEventFiringTest.testSendingKeysToAnotherElementShouldCauseTheBlurEventToFireInNonTopmostWindow', |
| 'ReferrerTest.navigationWhenProxyInterceptsASpecificUrl', |
| 'ReferrerTest.crossDomainHistoryNavigationWhenProxyInterceptsHostRequests', |
| 'ReferrerTest.crossDomainHistoryNavigationWithAProxiedHost', |
| |
| # Tests require proxy server can't be run on Android |
| 'ReferrerTest.crossDomainHistoryNavigationWithADirectProxy', |
| 'ReferrerTest.basicHistoryNavigationWithADirectProxy', |
| 'ReferrerTest.crossDomainHistoryNavigationWithoutAProxy', |
| 'ReferrerTest.basicHistoryNavigationWithoutAProxy', |
| |
| # Test with file upload not supported on Android |
| 'UploadTest.testUploadingWithHiddenFileInput', |
| |
| # This tests are failing because of Keys.CONTROL/SHIFT/.. are not being supported for drop down items. |
| 'CombinedInputActionsTest.testControlClickingOnMultiSelectionList', |
| 'CombinedInputActionsTest.testShiftClickingOnMultiSelectionList', |
| 'CombinedInputActionsTest.testPlainClickingOnMultiSelectionList', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2376 |
| 'ImplicitWaitTest.testShouldImplicitlyWaitForASingleElement', |
| |
| # Alerts are not yet supported on Android. |
| 'AlertsTest.*', |
| 'UnexpectedAlertBehaviorTest.*', |
| |
| # http://crbug.com/156390 |
| 'DragAndDropTest.*', |
| |
| # Scrolling touch events are not supported. |
| 'TouchScrollTest.*', |
| |
| # These tests start multiple sessions, which is not supported on a single |
| # Android device. |
| "AvailableLogsTest.shouldBeAbleToEnableProfilerLog", |
| "GetLogsTest.turningOffLogShouldMeanNoLogMessages", |
| "SessionHandlingTest.callingAnyOperationAfterQuitShouldThrowAnException", |
| "SessionHandlingTest.callingQuitMoreThanOnceOnASessionIsANoOp", |
| # Test is written using local files; doesn't work on Android. |
| 'UploadTest.testFileUploading', |
| |
| # Flaky: https://bugs.chromium.org/p/chromedriver/issues/detail?id=528 |
| 'PageLoadingTest.testShouldDoNothingIfThereIsNothingToGoBackTo', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=604 |
| 'I18nTest.testShouldBeAbleToActivateIMEEngine', |
| |
| # https://bugs.chromium.org/p/chromium/issues/detail?id=418590 |
| 'ClearTest.testContentEditableAreaShouldClear', |
| 'ClickScrollingTest.testClickingOnAnchorScrollsPage', |
| 'JavascriptEnabledDriverTest.testChangeEventIsFiredAppropriatelyWhenFocusIsLost', |
| 'TypingTest.testShouldBeAbleToTypeIntoEmptyContentEditableElement', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=922 |
| 'CorrectEventFiringTest.testShouldEmitOnClickEventsWhenSelectingElements', |
| 'CorrectEventFiringTest.testSendingKeysToAnotherElementShouldCauseTheBlurEventToFire', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1176 |
| 'ChromeDriverTests.clientLogShouldBeEnabledByDefault', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1119 |
| 'CombinedInputActionsTest.testCanClickOnLinksWithAnOffset', |
| 'CombinedInputActionsTest.testMouseMovementWorksWhenNavigatingToAnotherPage', |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1005 |
| 'WindowTest.*', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1478 |
| 'WindowSwitchingTest.*', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1878 |
| 'CombinedInputActionsTest.testSelectingMultipleItems', |
| 'CombinedInputActionsTest.testHoldingDownShiftKeyWhileClicking', |
| 'BasicMouseInterfaceTest.testDoubleClick', |
| 'BasicMouseInterfaceTest.testContextClick', |
| 'CorrectEventFiringTest.testShouldFireMouseUpEventWhenClicking', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1960 |
| 'CorrectEventFiringTest.testShouldNotThrowIfEventHandlerThrows', |
| 'CorrectEventFiringTest.testShouldFireMouseOverEventWhenClicking', |
| 'CorrectEventFiringTest.testShouldFireMouseDownEventWhenClicking', |
| 'CorrectEventFiringTest.testShouldFireTwoClickEventsWhenClickingOnALabel', |
| 'CorrectEventFiringTest.testShouldIssueClickEvents', |
| 'CorrectEventFiringTest.testShouldFireMouseMoveEventWhenClicking', |
| 'CombinedInputActionsTest.testChordControlCutAndPaste', |
| 'BasicKeyboardInterfaceTest.testSendingKeysWithShiftPressed', |
| 'BasicKeyboardInterfaceTest.testBasicKeyboardInputOnActiveElement', |
| 'BasicKeyboardInterfaceTest.testSendingKeyUp', |
| 'BasicKeyboardInterfaceTest.testSendingKeyDownOnly', |
| 'BasicMouseInterfaceTest.testMoveAndClick', |
| 'BasicMouseInterfaceTest.testShouldClickElementInIFrame', |
| 'CombinedInputActionsTest.testCanClickOnLinks', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2376 |
| 'ImplicitWaitTest.testShouldRetainImplicitlyWaitFromTheReturnedWebDriverOfFrameSwitchTo', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2594 |
| 'TakesScreenshotTest.testShouldCaptureScreenshotAtFramePage', |
| 'TakesScreenshotTest.testShouldCaptureScreenshotAtFramePageAfterSwitching', |
| 'TakesScreenshotTest.testShouldCaptureScreenshotAtIFramePageAfterSwitching', |
| 'TakesScreenshotTest.testShouldCaptureScreenshotOfCurrentViewport', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2601 |
| 'BasicKeyboardInterfaceTest.testSelectionSelectBySymbol', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2611 |
| 'CorrectEventFiringTest.testClickAnElementThatDisappear', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2697 |
| 'CorrectEventFiringTest.testShouldEmitClickEventWhenClickingOnATextInputElement', |
| ] |
| |
| _OS_NEGATIVE_FILTER['android:chrome_stable'] = ( |
| _OS_NEGATIVE_FILTER['android:chrome'] + [ |
| ] |
| ) |
| _OS_NEGATIVE_FILTER['android:chrome_beta'] = ( |
| _OS_NEGATIVE_FILTER['android:chrome'] + [ |
| ] |
| ) |
| _OS_NEGATIVE_FILTER['android:chromium'] = ( |
| _OS_NEGATIVE_FILTER['android:chrome'] + [ |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2580 |
| 'LocalStorageTest.*', |
| 'LocationContextTest.*', |
| 'SessionStorageTest.*', |
| ] |
| ) |
| _OS_NEGATIVE_FILTER['android:chromedriver_webview_shell'] = ( |
| _OS_NEGATIVE_FILTER['android:chrome'] + [ |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2330 |
| 'VisibilityTest.testShouldModifyTheVisibilityOfAnElementDynamically', |
| # Not applicable on ChromeDriverWebViewShell (doesn't support tabs). |
| 'WindowSwitchingTest.*', |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2595 |
| 'TakesScreenshotTest.*', |
| |
| # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2376 |
| 'ImplicitWaitTest.testShouldRetainImplicitlyWaitFromTheReturnedWebDriverOfFrameSwitchTo', |
| ] |
| ) |
| |
| |
| def _GetRevisionNegativeFilter(chrome_version): |
| if chrome_version in _REVISION_NEGATIVE_FILTER: |
| return _REVISION_NEGATIVE_FILTER[chrome_version] |
| return _REVISION_NEGATIVE_FILTER['HEAD'] |
| |
| def _GetRevisionReadyToRunFilter(chrome_version): |
| if chrome_version in _REVISION_READY_TO_RUN_FILTER: |
| return _REVISION_READY_TO_RUN_FILTER[chrome_version] |
| return _REVISION_READY_TO_RUN_FILTER['HEAD'] |
| |
| def _GetSpecificOsRevisionNegativeFilter(operating_system, chrome_version): |
| os_version = operating_system + "_" + chrome_version |
| if os_version in _SPECIFIC_OS_REVISION_NEGATIVE_FILTER: |
| return _SPECIFIC_OS_REVISION_NEGATIVE_FILTER[os_version] |
| return [] |
| |
| |
| def GetDisabledTestMatchers(operating_system, chrome_version): |
| """Returns the list of disabled test matchers for the specific configuration. |
| |
| Args: |
| operating_system: The operating system, one of 'linux', 'mac', 'win', or |
| 'android'. |
| chrome_version: Chrome version to test against, e.g., 'HEAD' or '26'. |
| |
| Returns: |
| List of disabled test matchers, which may contain '*' wildcards. |
| """ |
| return (_OS_NEGATIVE_FILTER[operating_system] + |
| _GetRevisionNegativeFilter(chrome_version) + |
| _GetSpecificOsRevisionNegativeFilter(operating_system, |
| chrome_version))[:] |
| |
| def GetReadyToRunTestMatchers(chrome_version): |
| return (_GetRevisionReadyToRunFilter(chrome_version))[:] |
| |
| def ApplyJavaTestFilter(operating_system, chrome_version, tests): |
| """Applies the test filter to the given list of tests. |
| |
| Args: |
| operating_system: The operating system, one of 'linux', 'mac', 'win', or |
| 'android'. |
| chrome_version: Chrome version to test against, e.g., 'HEAD' or '26'. |
| test: list of test names to filter. |
| |
| Returns: |
| Set of passed test names. |
| """ |
| filters = (_OS_NEGATIVE_FILTER[operating_system] + |
| _GetRevisionNegativeFilter(chrome_version) + |
| _GetSpecificOsRevisionNegativeFilter(operating_system, |
| chrome_version)) |
| passed = set(tests) |
| for f in filters: |
| passed.difference_update(set(t for t in tests if fnmatch.fnmatch(t, f))) |
| return passed |