Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Commit 421d623

Browse files
committed
fix(repeat): use 0-based indexing for repeater rows
BREAKING CHANGE: Finding rows with protractor.By.repeater now indexes from 0 instead of 1. This should be more familiar to most modern programmers. You will need to edit existing tests. Closes #90. Before: // The fourth foo ptor.findElement(protractor.By.repeater('foo in foos').row(4)); After: // The fourth foo ptor.findElement(protractor.By.repeater('foo in foos').row(3));
1 parent e45ceaa commit 421d623

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

lib/clientsidescripts.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ clientSideScripts.findBindings = function() {
9494
}
9595
}
9696
}
97-
return rows[index - 1];
97+
return rows[index];
9898
};
9999

100100
/**
@@ -153,7 +153,7 @@ clientSideScripts.findRepeaterElement = function() {
153153
}
154154
}
155155
}
156-
var row = rows[index - 1];
156+
var row = rows[index];
157157
var bindings = [];
158158
if (row.className.indexOf('ng-binding') != -1) {
159159
bindings.push(row);

spec/findelements_spec.js

+16-16
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,15 @@ describe('finding elements', function() {
101101
it('should find by partial match', function() {
102102
var fullMatch = ptor.findElement(
103103
protractor.By.repeater('baz in days | filter:\'T\'').
104-
row(1).column('{{baz}}'));
104+
row(0).column('{{baz}}'));
105105
expect(fullMatch.getText()).toEqual('Tue');
106106

107107
var partialMatch = ptor.findElement(
108-
protractor.By.repeater('baz in days').row(1).column('b'));
108+
protractor.By.repeater('baz in days').row(0).column('b'));
109109
expect(partialMatch.getText()).toEqual('Tue');
110110

111111
var partialRowMatch = ptor.findElement(
112-
protractor.By.repeater('baz in days').row(1));
112+
protractor.By.repeater('baz in days').row(0));
113113
expect(partialRowMatch.getText()).toEqual('Tue');
114114
});
115115

@@ -137,65 +137,65 @@ describe('finding elements', function() {
137137

138138
it('should return a single row', function() {
139139
var secondRow = ptor.findElement(
140-
protractor.By.repeater('dayColor in dayColors').row(2));
140+
protractor.By.repeater('dayColor in dayColors').row(1));
141141
expect(secondRow.getText()).toEqual('Tue green');
142142
});
143143

144144
it('should return an individual cell', function() {
145145
var secondColor = ptor.findElement(
146146
protractor.By.repeater('dayColor in dayColors').
147-
row(2).
147+
row(1).
148148
column('color'));
149149

150150
var secondColorByColumnFirst = ptor.findElement(
151151
protractor.By.repeater('dayColor in dayColors').
152152
column('color').
153-
row(2));
153+
row(1));
154154

155155
expect(secondColor.getText()).toEqual('green');
156156
expect(secondColorByColumnFirst.getText()).toEqual('green');
157157
});
158158

159159
it('should find a using data-ng-repeat', function() {
160160
var byRow =
161-
ptor.findElement(protractor.By.repeater('day in days').row(3));
161+
ptor.findElement(protractor.By.repeater('day in days').row(2));
162162
expect(byRow.getText()).toEqual('Wed');
163163

164164
var byCol =
165-
ptor.findElement(protractor.By.repeater('day in days').row(3).
165+
ptor.findElement(protractor.By.repeater('day in days').row(2).
166166
column('day'));
167167
expect(byCol.getText()).toEqual('Wed');
168168
});
169169

170170
it('should find using ng:repeat', function() {
171171
var byRow =
172-
ptor.findElement(protractor.By.repeater('bar in days').row(3));
172+
ptor.findElement(protractor.By.repeater('bar in days').row(2));
173173
expect(byRow.getText()).toEqual('Wed');
174174

175175
var byCol =
176-
ptor.findElement(protractor.By.repeater('bar in days').row(3).
176+
ptor.findElement(protractor.By.repeater('bar in days').row(2).
177177
column('bar'));
178178
expect(byCol.getText()).toEqual('Wed');
179179
});
180180

181181
it('should find using ng_repeat', function() {
182182
var byRow =
183-
ptor.findElement(protractor.By.repeater('foo in days').row(3));
183+
ptor.findElement(protractor.By.repeater('foo in days').row(2));
184184
expect(byRow.getText()).toEqual('Wed');
185185

186186
var byCol =
187-
ptor.findElement(protractor.By.repeater('foo in days').row(3).
187+
ptor.findElement(protractor.By.repeater('foo in days').row(2).
188188
column('foo'));
189189
expect(byCol.getText()).toEqual('Wed');
190190
});
191191

192192
it('should find using x-ng-repeat', function() {
193193
var byRow =
194-
ptor.findElement(protractor.By.repeater('qux in days').row(3));
194+
ptor.findElement(protractor.By.repeater('qux in days').row(2));
195195
expect(byRow.getText()).toEqual('Wed');
196196

197197
var byCol =
198-
ptor.findElement(protractor.By.repeater('qux in days').row(3).
198+
ptor.findElement(protractor.By.repeater('qux in days').row(2).
199199
column('qux'));
200200
expect(byCol.getText()).toEqual('Wed');
201201
});
@@ -230,12 +230,12 @@ describe('finding elements', function() {
230230
it('should find elements using a repeater', function() {
231231
// Returns the element for the entire row.
232232
expect(
233-
ptor.findElement(protractor.By.repeater('ball in planets').row(3)).
233+
ptor.findElement(protractor.By.repeater('ball in planets').row(2)).
234234
getText()).toEqual('Earth:3');
235235

236236
// Returns the element in row 2 and the column with binding {{ball.name}}
237237
expect(
238-
ptor.findElement(protractor.By.repeater('ball in planets').row(2).
238+
ptor.findElement(protractor.By.repeater('ball in planets').row(1).
239239
column('{{ball.name}}')).getText()).toEqual('Venus');
240240

241241
// Returns the entire column.

spec/testapp_spec.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,20 @@ describe('longer example', function() {
4444
var addOneButton = ptor.findElement(protractor.By.id('addone'));
4545
addOneButton.click();
4646
var topNumber = ptor.findElement(
47-
protractor.By.repeater('foo in foos').row(1).
47+
protractor.By.repeater('foo in foos').row(0).
4848
column('{{foo.b}}'));
4949

5050
expect(topNumber.getText()).toEqual('14930352');
5151

5252
addOneButton.click();
5353

5454
topNumber = ptor.findElement(
55-
protractor.By.repeater('foo in foos').row(1).
55+
protractor.By.repeater('foo in foos').row(0).
5656
column('{{foo.b}}'));
5757

5858
expect(topNumber.getText()).toEqual('24157817');
5959
});
6060
});
6161
});
6262

63-
});
63+
});

0 commit comments

Comments
 (0)