I've been trying out the AngularJS e2e tests and am getting stuck determining whether or not a checkbox is checked.
I used the end to end test for the checkbox input as a sample (see the End to end test tab in the Example).
Html snippet:
Value1: <input type="checkbox" ng-model="value1"> <br/>
Controller snippet:
function Ctrl($scope) {
$scope.value1 = true;
}
Here is what I tried:
1) expect(binding('value1')).toEqual('true');
This works in the sample end to end test as long as value1
is displayed on screen with {{value1}}
. If you test this locally and remove `{{value1}} the binding test fails. In most of my real-world examples I am not displaying the checkbox value on the screen anywhere.
2) expect(input('value1').val()).toEqual('true');
The value will always default to on
and is not related to whether or not the checkbox is in a checked state (taken from this post).
Note: It looks like the Angular E2E testing will be replaced with Protractor in the future (see the docs)
For anyone using Protractor, there is webdriver isSelected() for exactly this.
Instead of asking for checked
attribute you can do:
expect(element(by.model('value1')).isSelected()).toBeTruthy();