- Added
Image
element which can be used to represent images (and anything else that XCUI sees as a.image
type). (issue #100) - Added Brewfile for better dependency control
- Fixes an issue when building Carthage framework failed due to a missing file in TABTestKit carthage project.
- Adds a step script for building carthage framework in Travis CI. This should report to CI if the TABTestKit can be build as a Carthage framework.
- Adds a step script for linting cocoapods project in Travis CI. This should report to CI if the TABTestKit can be safe to be published as Cocoapods framework.
- Added support for deep linking by adding a new function to
NavigationContext
which allows you to pass anyURL
to open, including regular HTTPS or app-specific URLs. (issue #94) - Added globally available instance of
Springboard
meaning you no longer need to create one every time you want to useSpringboard
as a parent element. (issue #93) - Added
Icon
element which can be used to represent home screen icons (and anything else that XCUI sees as an.icon
type). (issue #95) - Added support for waiting for the app to be in a particular state in
AppContext
(useful for deep linking)
- Improved error messaging with XCTAssert* calls. The main offender was when waiting for an element to be in a specific state and it would just show an error of
XCTAssertTrue failed
. (issue #80)
- Better failure reports. Specifically, the most recently executed Step's file / line is used to report a failure (if one exists). This means that the red error banner now shows on the correct line in the correct file, and should report better failures on CI rather than just "assert true failed in Element.swift" etc. (issue #80)
- Properly clears launch argument indicating that the app should be launched clean when calling
launchTheApp(clean:)
inAppContext
. (issue #74) - Fixes an issue when calling
background()
onBaseApp
on iOS 13 since it never reaches therunningBackgroundSuspended
state. This is likely a bug in iOS 13 simulators/XCUI but this is fixed by just waiting forrunningBackground
for iOS 13+. (issue #64)
- Clears launch arguments and launch environment values as part of tearDown, ready for the next test.
- Added new
ActivitySheet
to represent theUIActivityViewController
sheet. - Added support for
Carthage
, which allows project to use TABTestKit usingCarthage
as their dependency manager.
- Renames
func keyboard(isType type: Keyboard.KeyboardType)
tofunc keyboardType(is type: Keyboard.KeyboardType)
to avoid conflict withpublic let keyboard = Keyboard()
withinKeyboardContext
.
- Added option to provide multiple states when using
InteractionContext
to scroll until an element in a particular state or multiple states. - Added option to scroll until some element is not in a state (or multiple states).
- Added a new
visibleIn
State
case, which takes a different element that the element must be visible in, unlike the existingvisible
case which just uses whatever theparent
element is. - Added a new
from(to)
Direction
case, which allows you to provide afrom
andto
coordinate to scroll from and to. This is useful, for example, when trying to avoid the keyboard while scrolling. - Added
CGVector
helper constants for representing various positions in the element's space, like.middle
,.topLeft
,.bottomThird
. These can be used on their own, or with the newDirection
case mentioned above. - Updated the docs for
CellContaining
to be clearer about how it works with cell reuse. - Added a new
ScrollableScreen
protocol, which is a special protocol you can make your screen structs conform to instead ofScreen
. To conform toScrollableScreen
, yourtrait
must be any element that is alsoScrollable
(likeScrollView
orTable
). By doing that, you automatically get scrolling behaviour on the screen so you can pass the screen instance in directly toInteractionContext
when scrolling. - Added new
Keyboard
element, which can be used anywhere thatElement
can, and more usefully be used to assert to right keyboard type is shown on-screen. You can also useKeyboard
to find thetopCoordinate
of it to avoid it while scrolling or performing gestures. - Since there can only be one software keyboard shown on-screen at one time, an instance is globally available in your tests.
- Added new
KeyboardContext
whichTABTestCase
already conforms to. - Added
frameInScreen
property to allElement
s, which allows you to use theCGRect
of the element in relation to the device's screen. - Improved the default
Scrollable
implementation to avoid the keyboard while scrolling.
- Added a workaround for iOS 13, where
UILabel
s with the.header
accessibility trait are always seen as.staticText
byXCUI
regardless.
Initial release of TABTestKit, check out the README!