blob: 2ab5348580f764b4cb4bb532b8ecae73aee03bbc [file] [log] [blame]
# 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