diff --git a/.travis.yml b/.travis.yml
index f31876b..c55b442 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,10 +5,11 @@ env:
global:
- secure: RhmfgnPkrCcjOTWkfYFZS5zlBQhte2cAAtjA/bIKH4qhaLsWHHS0ApJ065PJs4H/lfslWSfnRcUpaeFq8hhr/9dMlCxFJc5CTJ2EfmV56NjsiaETtrxHdNVFtZU/DxJnSxnW4revbFkk/mM6JZ+P7XwVv+iitKhx3uRpX2/rKWA=
- secure: hmu/VH1viA8oPFjxBrjvnLrNa0PnfXsIKMMv9ZmgpXthdhTtuReD9rPmbnFzNh9MyCkLSZcndJakpDu9SwHVDcs5eyV72fuXHW/0htyN9eNTMyShrNIpOJe6JUqMez7MxQU9J45IJGSvbyEfrbZ20mbGGzJ41KnEZ0IfwODPcMY=
+ - secure: JrGUKctdLs9cwJlLtAHahYlJmE0jGt4/Rkt6RMD20btQcBhcvAmTJFICsYaac4h5cc0krStkeskXkZ8YANhB3OGzbLw7PGcTjnFUvVwpZKRmnsUV6puwEUH0AC6XNl4J2r9G8wPOZyy4WVxZlbdFi9To8dc8X2iufo2RyWf3MDK+OHm0CuMj6JXnJzA5FMk3pxZOjopG2W0/uAZETd9FPWmm8J6NZRsvx4nsQz2/eBjH2+MaoQYK4AcqvFFjwuume2Oali8+NQLyu7zpbfaLtLBg9+53hc59KFB/ha8Q6o0APz6rtTtgwRDckFHUVaxduTaWyKXvD0Krj3d1BvDnZVRebx4OYLstHUfnY4B6CCgKJ0ZdLVIf+I6UtHKoDu+qNc0e7EYY9rRDwFAJiE1OU+QhVE+m5UbUxHY0pCvbiKSsKe7vpe0dDvrsnuZTw8N53n7ZQF3QbMhxwLD+GONWWK6RLK1gbVbvcrBCtBsFPr6rWyYMQPPM09+aKmRTW2uRGAuf8tudiKf19Znd4EMKjVnGAW5qDxEJ2o9x357BXLCjeNH/BjxLOW4oH3bqukMXE4EmLpb6eUXCKVaRUD4+adqw8E3/iKaowotwwPl39dnqk5AmiXY4ID6vaTtFlyg1axDUfZwFysObIP1T+SDMDu2Nx3VQMlRKC4AOOmDz5co=
+ - secure: Qul/FmeTIuC6origZyNVniL8xm7ah29V0DJVvx7OP2+ibOtORuTa9od7gyZyhc3cuCegAaL8Q+kAxiNedy7m/UdE5eDvgSBpVJsO7g1DxSlb9dB082BSY+7VSjYY9Q08koJgTZZ/pnV3MSL9TaQzxn+HTH/nIiHgn+ZaQ0l19kjzeGclkN7HgPwpjNhb6OAtwTjf82Ys10nunv0pATgmc4BkqXP/UnJ0DXF8+tO+AVz2IRYstk0j5u75UOONvp7OTt4cpZqBK3iDY2zljduXnJ4NbOwdwi8dBk2tOLQCq+il28kM/adsyUomcj8h3qAN4RQD95yE37XZQrx1bT+aJLtphQKsaYmDFVdj5OWOOAjTyZ3J7FROyRmI74tPAAfEXBxueuP15Jlogyci3Bp341cgtBu7EX9etd2W1uTSVWDiUfFedIXgE8py5PFSX48SC0ay6hkeMei7wQ5R4d7tpuQpJ1f/zXR4YsdgKcTHU7XM13nP8QrSAa76QhRtubW0KPoIncftzvw/UKjc5pofqd8+ylQ66Xhig92jabyLKY+1CmfSRaBgj0IqLmCB08SOW7NnvPVAYqqnYNHpdCQMMrqKzMgJepBAruD/PnFAQ6/0Z6Gbkh8AUqkghMXUkf2oxz9uHyIAGf4Lo0T+BBaZWNsh9fitHdCO3YLCiVnet+Y=
before_install:
- npm install -g bower
- npm install -g grunt-cli
- - npm install -g protractor && webdriver-manager update
install:
- npm install
script:
diff --git a/Gruntfile.js b/Gruntfile.js
index 88a1289..1101308 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -157,7 +157,10 @@ module.exports = function (grunt) {
}
},
production: {
- src: ["<%= config.outputDir %>js/app.min.js", "./app/components/angular-mocks/angular-mocks.js"]
+ options: {
+ vendor: ["<%= config.vendorFiles %>"]
+ },
+ src: ["<%= config.outputDir %><%= pkg.name %>.min.js", "./app/components/angular-mocks/angular-mocks.js"]
}
},
@@ -249,6 +252,14 @@ module.exports = function (grunt) {
src: ["**/*", "*"],
dest: "<%= config.outputDir %>data/"
}]
+ },
+ e2e: {
+ files: [{
+ expand: true,
+ cwd: "./app/components",
+ src: ["angular/angular.js"],
+ dest: "<%= config.outputDir %>components/"
+ }]
}
},
diff --git a/README.md b/README.md
index 1d28727..df99cc9 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# snInfiniteScroll
-[](https://travis-ci.org/thisissoon/sn-infinite-scroll)
-[](https://coveralls.io/r/thisissoon/sn-infinite-scroll)
+[](https://travis-ci.org/thisissoon/angular-infinite-scroll)
+[](https://coveralls.io/github/thisissoon/angular-infinite-scroll)
Simple, lightweight infinite scrolling for Angular, with no other dependencies.
diff --git a/app/index.html b/app/index.html
index 6bd4a7c..1e88580 100644
--- a/app/index.html
+++ b/app/index.html
@@ -1,8 +1,8 @@
-
-
-
-
+
+
+
+
+
+
+
@@ -68,10 +81,57 @@
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index bd24bb4..e2420ff 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"grunt-contrib-concat": "~0.5.1",
"grunt-contrib-connect": "~0.10.1",
"grunt-contrib-copy": "~0.8.0",
- "grunt-contrib-jasmine": "~0.8.2",
+ "grunt-contrib-jasmine": "~0.9.1",
"grunt-contrib-jshint": "~0.11.1",
"grunt-contrib-less": "~1.0.1",
"grunt-contrib-uglify": "~0.9.1",
diff --git a/tests/e2e/app.e2e.js b/tests/e2e/app.e2e.js
index a6322ad..71ac762 100644
--- a/tests/e2e/app.e2e.js
+++ b/tests/e2e/app.e2e.js
@@ -7,11 +7,12 @@
* @module sn.infiniteScroll.e2e
* @author SOON_
*/
-angular.module("sn.infiniteScroll.e2e", ["sn.infiniteScroll", "ngMockE2E"])
+angular.module("sn.infiniteScroll.e2e", ["sn.infiniteScroll.demo", "ngMockE2E"])
.run([
"$httpBackend",
function ($httpBackend) {
+ $httpBackend.whenGET(/users.*/).respond(200, { items: [{ name: "Micheal Mariah" },{ name: "Ste Letha" },{ name: "Rachel Lorena" },{ name: "Annabella Abby" }], total: 10, _pagination: { total: 3, current: 1, limit: 4 }});
$httpBackend.whenGET(/partials\/.*/).passThrough();
}
diff --git a/tests/e2e/protractor.saucelabs.conf.js b/tests/e2e/protractor.saucelabs.conf.js
index 7d7d9ef..5428f8c 100644
--- a/tests/e2e/protractor.saucelabs.conf.js
+++ b/tests/e2e/protractor.saucelabs.conf.js
@@ -26,41 +26,47 @@ exports.config = {
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
"build": process.env.TRAVIS_BUILD_NUMBER,
"name": pkg.name + " (Chrome: Linux) Build: " + process.env.TRAVIS_BUILD_NUMBER,
- "version": "39",
- "selenium-version": "2.43.1",
- "platform": "Linux"
+ "version": "43.0",
+ "selenium-version": "2.46.0",
+ "chromedriver-version": "2.14",
+ "platform": "Windows 8.1",
+ "screenResolution": "1024x768"
}, {
"browserName": "firefox",
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
"build": process.env.TRAVIS_BUILD_NUMBER,
"name": pkg.name + " (FF: Linux) Build: " + process.env.TRAVIS_BUILD_NUMBER,
- "version": "34",
- "selenium-version": "2.43.1",
- "platform": "Linux"
+ "version": "39.0",
+ "selenium-version": "2.46.0",
+ "platform": "Linux",
+ "screenResolution": "1024x768"
}, {
"browserName": "safari",
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
"build": process.env.TRAVIS_BUILD_NUMBER,
"name": pkg.name + " (Safari: OS X 10.10) Build: " + process.env.TRAVIS_BUILD_NUMBER,
"version": "8",
- "selenium-version": "2.43.1",
- "platform": "OS X 10.10"
+ "selenium-version": "2.44.0",
+ "platform": "OS X 10.10",
+ "screenResolution": "1024x768"
}, {
"browserName": "internet explorer",
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
"build": process.env.TRAVIS_BUILD_NUMBER,
"name": pkg.name + " (IE11: Win 8.1) Build: " + process.env.TRAVIS_BUILD_NUMBER,
"version": "11",
- "selenium-version": "2.43.1",
- "platform": "Windows 8.1"
+ "selenium-version": "2.46.0",
+ "platform": "Windows 8.1",
+ "screenResolution": "1024x768"
}, {
"browserName": "internet explorer",
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
"build": process.env.TRAVIS_BUILD_NUMBER,
"name": pkg.name + " (IE10: Win 8) Build: " + process.env.TRAVIS_BUILD_NUMBER,
"version": "10",
- "selenium-version": "2.43.1",
- "platform": "Windows 8"
+ "selenium-version": "2.46.0",
+ "platform": "Windows 8",
+ "screenResolution": "1024x768"
}, {
"browserName": "chrome",
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
@@ -71,7 +77,8 @@ exports.config = {
"platformName": "Android",
"appiumVersion": "1.3.4",
"deviceName": "Android Emulator",
- "device-orientation": "portrait"
+ "device-orientation": "portrait",
+ "selenium-version": "2.46.0"
}, {
"browserName": "safari",
"tunnel-identifier": process.env.TRAVIS_JOB_NUMBER,
@@ -83,7 +90,8 @@ exports.config = {
"appiumVersion": "1.3.4",
"platform": "iOS",
"deviceName": "iPhone Simulator",
- "device-orientation": "portrait"
+ "device-orientation": "portrait",
+ "selenium-version": "2.46.0"
}],
// ----- More information for your tests ----
diff --git a/tests/e2e/specs/scenarios.js b/tests/e2e/specs/scenarios.js
index fad8d53..1416c6b 100644
--- a/tests/e2e/specs/scenarios.js
+++ b/tests/e2e/specs/scenarios.js
@@ -2,70 +2,50 @@
/* https://github.com/angular/protractor/blob/master/docs/getting-started.md */
-describe("myApp", function() {
+describe("sn.infiniteScroll", function() {
- describe("search", function() {
+ var scrollTo = function scrollTo (y) {
+ return "document.querySelector('.infinite-scroll').scrollTop =" + y;
+ };
- beforeEach(function(){
- browser.manage().deleteAllCookies();
- browser.get("http://127.0.0.1:8000/");
- browser.waitForAngular();
- browser.driver.sleep(2000);
- });
-
- it("should automatically redirect to / when location hash/fragment is empty", function() {
- expect(browser.getLocationAbsUrl()).toMatch("/");
- });
-
- it("should render home partial when user navigates to /", function() {
- expect(element.all(by.css("ng-view h1")).first().getText()).toContain("Search");
- });
+ beforeEach(function() {
+ browser.get("http://127.0.0.1:8000/");
+ browser.waitForAngular();
+ browser.driver.sleep(2000);
+ });
- it("should search for location", function() {
- element(by.model("location")).sendKeys("London");
- element(by.buttonText("Submit")).click();
+ it("should load more pages on scroll to bottom of list (8 items total)", function() {
- browser.driver.sleep(5000);
+ // confirm initial state
+ expect(element.all(by.repeater("user in users")).count()).toEqual(4);
- browser.driver.wait(function() {
- return browser.driver.getCurrentUrl().then(function (url) {
- return /results/.test(url);
- });
- });
- expect(browser.getLocationAbsUrl()).toMatch("/results");
- expect(element.all(by.repeater("result in results")).count()).toEqual(4);
- });
+ // 2nd page
+ browser.executeScript(scrollTo(2000));
+ browser.driver.sleep(2000);
+ expect(element.all(by.repeater("user in users")).count()).toEqual(8);
});
+ it("should load more pages on scroll to bottom of list (12 items total)", function() {
- describe("results", function() {
-
- beforeEach(function(){
- browser.get("http://127.0.0.1:8000/results");
- browser.waitForAngular();
- browser.driver.sleep(2000);
- });
+ // 3rd page
+ browser.executeScript(scrollTo(2000));
+ browser.executeScript(scrollTo(4000));
+ browser.driver.sleep(2000);
- it("should render results page view", function() {
- expect(element.all(by.css("ng-view h1")).first().getText()).toContain("Results");
- expect(element(by.css(".alert-info")).getText()).toContain("No results");
+ expect(element.all(by.repeater("user in users")).count()).toEqual(12);
- });
-
- it("should go back to search page view", function() {
- element(by.css("a.home")).click();
-
- browser.driver.wait(function() {
- return browser.driver.getCurrentUrl().then(function (url) {
- return /\//.test(url);
- });
- });
+ });
- expect(browser.getLocationAbsUrl()).toMatch("/");
+ it("should NOT load more pages on scroll to bottom of list", function() {
- });
+ // 4th page - shouldn't exist
+ browser.executeScript(scrollTo(2000));
+ browser.executeScript(scrollTo(4000));
+ browser.executeScript(scrollTo(6000));
+ browser.driver.sleep(2000);
+ expect(element.all(by.repeater("user in users")).count()).toEqual(12);
});
});