mark items on page 2+ read as well, update tests

Update integration tests, to ensure that all articles are marked read,
instead of only visible.
master
Mathias Kresin 7 years ago
parent 13aaf5fbed
commit ee98a62519
  1. 32
      assets/js/all.min.js
  2. 2
      assets/js/event.js
  3. 13
      assets/js/item.js
  4. 16
      controllers/item.php
  5. 8
      docs/tests.markdown
  6. 12
      models/item.php
  7. 4
      templates/unread_items.php
  8. 2126
      tests/integration/datasets/expected_MarkAllRead.xml
  9. 80
      tests/integration/datasets/fixture_feed1_extra_long.xml
  10. 74
      tests/integration/keyboardShortcutsTest.php
  11. 28
      tests/integration/pageBookmarksTest.php
  12. 56
      tests/integration/pageFirstFeedTest.php
  13. 28
      tests/integration/pageHistoryTest.php
  14. 56
      tests/integration/pageUnreadTest.php

@ -1,20 +1,20 @@
var h=function(){var e=[];return{h:function(c,a){var b=c.querySelector("span.items-count");if(b){var d=c.getAttribute("data-feed-id"),e=c.querySelector("h2:first-of-type");e.className="loading-icon";var p=new XMLHttpRequest;p.onload=function(){e.className="";c.removeAttribute("data-feed-error");var d=c.querySelector(".feed-last-checked");d&&(d.innerHTML=d.getAttribute("data-after-update"));d=JSON.parse(this.responseText);d.result?b.innerHTML=d.items_count.items_unread+"/"+d.items_count.items_total:
c.setAttribute("data-feed-error","1");a?a(d):g.a()};p.open("POST","?action=refresh-feed&feed_id="+d,!0);p.send()}},i:function(){var c=Array.prototype.slice.call(document.querySelectorAll("article:not([data-feed-disabled])")),a=setInterval(function(){for(;0<c.length&&5>e.length;){var b=c.shift();e.push(parseInt(b.getAttribute("data-feed-id"),10));h.h(b,function(b){b=e.indexOf(b.feed_id);0<=b&&e.splice(b,1);0===c.length&&0===e.length&&(clearInterval(a),g.a())})}},100)}}}(),g=function(){function e(f){var a=
document.createEvent("MouseEvents");a.initEvent("mousedown",!0,!0);f.dispatchEvent(a);a=document.createEvent("MouseEvents");a.initEvent("mouseup",!0,!0);f.dispatchEvent(a);f.click()}function c(a){return item_id=a.getAttribute("data-item-id")}function a(a){if(a&&a.hasAttribute("data-reverse-label")){var b=a.innerHTML;a.innerHTML=a.getAttribute("data-reverse-label");a.setAttribute("data-reverse-label",b)}}function b(f){if("read"!==f.getAttribute("data-item-status")){if(f.getAttribute("data-hide"))d(f);
else{f.setAttribute("data-item-status","read");var b=f.querySelector("a.mark");a(b);(f=f.querySelector("a.mark"))&&f.setAttribute("data-action","mark-unread")}k--}}function d(a){"mouse"!==m.c&&u.d();a.parentNode.removeChild(a);r--}function n(){-1<window.location.href.indexOf("nothing_to_read=1")&&0<k?window.location.href="?action=unread":0===r&&window.location.reload();var a=document.getElementById("page-counter");a&&(a.textContent=r||"");document.getElementById("nav-counter").textContent=k||"";var b=
document.querySelector("div.page-header h2:first-of-type");if(b)pageHeading=b.firstChild.nodeValue;else if(b=document.querySelector("article.item h1:first-of-type")){document.title=b.textContent;return}switch(document.querySelector("section.page").getAttribute("data-item-page")){case "unread":document.title="Miniflux ("+k+")";break;case "feed-items":document.title="("+r+") "+pageHeading;break;default:document.title=a?pageHeading+" ("+r+")":pageHeading}}function p(a){var q=c(a),d=new XMLHttpRequest;
d.onload=function(){u.b()&&(b(a),n())};d.open("POST","?action=mark-item-read&id="+q,!0);d.send()}function w(f){var b=c(f),l=new XMLHttpRequest;l.onload=function(){if(u.b()){if("unread"!==f.getAttribute("data-item-status")){if(f.getAttribute("data-hide"))d(f);else{f.setAttribute("data-item-status","unread");var b=f.querySelector("a.mark");a(b);(b=f.querySelector("a.mark"))&&b.setAttribute("data-action","mark-read")}k++}n()}};l.open("POST","?action=mark-item-unread&id="+b,!0);l.send()}var v=[],t=!1,
k=function(){var a=document.getElementById("nav-counter");if(a)return counter=parseInt(a.textContent,10)||0}(),r=function(){var a=document.getElementById("page-counter");if(a)return counter=parseInt(a.textContent,10)||0}();return{n:p,p:w,o:function(a){var b=c(a),l=new XMLHttpRequest;l.onload=function(){u.b()&&(d(a),"unread"===a.getAttribute("data-item-status")&&k--,n())};l.open("POST","?action=mark-item-removed&id="+b,!0);l.send()},g:function(b){var q=c(b),l="1"===b.getAttribute("data-item-bookmark")?
"0":"1",e=new XMLHttpRequest;e.onload=function(){var c=document.querySelector("section.page");if(u.b()&&"bookmarks"===c.getAttribute("data-item-page"))d(b),n();else if(b.setAttribute("data-item-bookmark",l),u.b())c=b.querySelector("a.bookmark"),a(c);else if((c=b.querySelector("a.bookmark-icon"))&&c.hasAttribute("data-reverse-title")){var q=c.getAttribute("title");c.setAttribute("title",c.getAttribute("data-reverse-title"));c.setAttribute("data-reverse-title",q)}};e.open("POST","?action=bookmark&id="+
q+"&value="+l,!0);e.send()},B:function(a){var b=a.getAttribute("data-item-status");"read"===b?w(a):"unread"===b&&p(a)},w:function(a){(a=a.querySelector("a.show"))&&e(a)},t:function(a){(a=a.querySelector("a.original"))&&e(a)},e:function(a){var b=document.getElementById("download-item");if(b){b.innerHTML=" "+b.getAttribute("data-before-message");b.className="loading-icon";var d=new XMLHttpRequest;d.onload=function(){var a=JSON.parse(d.responseText);b.className="";if(a.result){var c=document.getElementById("item-content");
c&&(c.innerHTML=a.content);b.innerHTML=b.getAttribute("data-after-message")}else b.innerHTML=b.getAttribute("data-failure-message")};a=c(a);d.open("POST","?action=download-item&id="+a,!0);d.send()}},r:function(a){for(var b=document.getElementsByTagName("article"),d=[],e=0,k=b.length;e<k;e++)d.push(c(b[e]));b=new XMLHttpRequest;b.onload=function(){window.location.href=a};b.open("POST","?action=mark-items-as-read",!0);b.send(JSON.stringify(d))},q:function(a){var c=new XMLHttpRequest;c.onload=function(){for(var a=
document.getElementsByTagName("article"),c=0,d=a.length;c<d;c++)b(a[c]);k=this.responseText;n()};c.open("POST","?action=mark-feed-as-read&feed_id="+a,!0);c.send()},C:function(){for(var a=["#current-item h1","#item-content","#listing #current-item h2","#listing #current-item .preview"],b=0;b<a.length;b++){var c=document.querySelector(a[b]);c&&(c.dir=""==c.dir?"rtl":"")}},D:function(){return t},a:function(){if(!document.hidden||!t){var a=new XMLHttpRequest;a.onload=function(){var a=0===v.length,b=!1,
c=JSON.parse(this.responseText),d;for(d in c.feeds){var e=c.feeds[d];if(!v.hasOwnProperty(d)||e.time>v[d])v[d]=e.time,"unread"===e.status&&(b=!0)}document.hidden||c.nbUnread===k&&!t?document.hidden&&!a&&b&&(t=!0,document.title="\u21bb "+document.title):(t=!1,k=c.nbUnread,n())};a.open("POST","?action=latest-feeds-items",!0);a.send()}}}}(),m=function(){function e(a){if(63!==a.keyCode&&63!==a.which&&(a.ctrlKey||a.shiftKey||a.altKey||a.metaKey))return!0;a=a.target||a.srcElement;return"INPUT"===a.tagName||
"TEXTAREA"===a.tagName?!0:!1}var c=[];return{c:"",l:function(){document.onclick=function(a){a.target.hasAttribute("data-action")&&"original"!==a.target.className&&a.preventDefault()};document.onmouseup=function(a){if(2!==a.button)if("INPUT"===a.target.nodeName&&"auto-select"===a.target.className)a.target.select();else{var b=a.target.getAttribute("data-action");if(b){m.c="mouse";var c;a:{for(element=a.target;element&&element.parentNode;)if(element=element.parentNode,element.tagName&&"article"===element.tagName.toLowerCase()){c=
element;break a}c=void 0}switch(b){case "refresh-all":h.i();break;case "refresh-feed":c&&h.h(c);break;case "mark-read":c&&g.n(c);break;case "mark-unread":c&&g.p(c);break;case "mark-removed":c&&g.o(c);break;case "bookmark":c&&g.g(c);break;case "download-item":c&&g.e(c);break;case "mark-all-read":g.r("?action=unread");break;case "mark-feed-read":g.q(a.target.getAttribute("data-feed-id"))}}}}},k:function(){document.onkeypress=function(a){if(!e(a))if(m.c="keyboard",c.push(a.key||a.which),"g"===c[0]||
103===c[0])switch(c[1]){case void 0:break;case "u":case 117:window.location.href="?action=unread";c=[];break;case "b":case 98:window.location.href="?action=bookmarks";c=[];break;case "h":case 104:window.location.href="?action=history";c=[];break;case "s":case 115:window.location.href="?action=feeds";c=[];break;case "p":case 112:window.location.href="?action=config";c=[];break;default:c=[]}else{c=[];var b=document.getElementById("current-item");switch(a.key||a.which){case "d":case 100:b&&g.e(b);break;
case "p":case 112:case "k":case 107:u.f();break;case "n":case 110:case "j":case 106:u.d();break;case "v":case 118:b&&g.t(b);break;case "o":case 111:b&&g.w(b);break;case "m":case 109:b&&g.B(b);break;case "f":case 102:b&&g.g(b);break;case "h":case 104:u.u();break;case "l":case 108:u.s();break;case "r":case 114:h.i();break;case "?":case 63:u.A();break;case "z":case 122:g.C()}}};document.onkeydown=function(a){if(!e(a))switch(m.c="keyboard",a.key||a.which){case "ArrowLeft":case "Left":case 37:u.f();break;
case "ArrowRight":case "Right":case 39:u.d()}}},m:function(){document.addEventListener("visibilitychange",function(){!document.hidden&&g.D()&&g.a()})}}}(),u=function(){function e(a){var b=pageYOffset+document.documentElement.clientHeight;(0>b-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function c(){return document.getElementById("listing")?!0:!1}return{s:function(){var a=document.getElementById("next-page");a&&a.click()},u:function(){var a=
document.getElementById("previous-page");a&&a.click()},d:function(){var a=document.getElementById("next-item");if(a)a.click();else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=0,d=a.length;b<d;b++){if("current-item"===a[b].id){b+1<d&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b+1].id="current-item",e(a[b+1]));break}}else a[0].id="current-item",e(a[0])},f:function(){var a=document.getElementById("previous-item");if(a)a.click();else if(c())if(a=
document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=a.length-1;0<=b;b--){if("current-item"===a[b].id){0<=b-1&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b-1].id="current-item",e(a[b-1]));break}}else a[a.length-1].id="current-item",e(a[a.length-1])},A:function(){open("?action=show-help","Help","width=320,height=450,location=no,scrollbars=no,status=no,toolbar=no")},b:c}}();
else{f.setAttribute("data-item-status","read");var b=f.querySelector("a.mark");a(b);(f=f.querySelector("a.mark"))&&f.setAttribute("data-action","mark-unread")}l--}}function d(a){"mouse"!==m.c&&u.d();a.parentNode.removeChild(a);r--}function n(){-1<window.location.href.indexOf("nothing_to_read=1")&&0<l?window.location.href="?action=unread":0===r&&window.location.reload();var a=document.getElementById("page-counter");a&&(a.textContent=r||"");document.getElementById("nav-counter").textContent=l||"";var b=
document.querySelector("div.page-header h2:first-of-type");if(b)pageHeading=b.firstChild.nodeValue;else if(b=document.querySelector("article.item h1:first-of-type")){document.title=b.textContent;return}switch(document.querySelector("section.page").getAttribute("data-item-page")){case "unread":document.title="Miniflux ("+l+")";break;case "feed-items":document.title="("+r+") "+pageHeading;break;default:document.title=a?pageHeading+" ("+r+")":pageHeading}}function p(a){var q=c(a),d=new XMLHttpRequest;
d.onload=function(){u.b()&&(b(a),n())};d.open("POST","?action=mark-item-read&id="+q,!0);d.send()}function w(f){var b=c(f),k=new XMLHttpRequest;k.onload=function(){if(u.b()){if("unread"!==f.getAttribute("data-item-status")){if(f.getAttribute("data-hide"))d(f);else{f.setAttribute("data-item-status","unread");var b=f.querySelector("a.mark");a(b);(b=f.querySelector("a.mark"))&&b.setAttribute("data-action","mark-read")}l++}n()}};k.open("POST","?action=mark-item-unread&id="+b,!0);k.send()}var v=[],t=!1,
l=function(){var a=document.getElementById("nav-counter");if(a)return counter=parseInt(a.textContent,10)||0}(),r=function(){var a=document.getElementById("page-counter");if(a)return counter=parseInt(a.textContent,10)||0}();return{o:p,q:w,p:function(a){var b=c(a),k=new XMLHttpRequest;k.onload=function(){u.b()&&(d(a),"unread"===a.getAttribute("data-item-status")&&l--,n())};k.open("POST","?action=mark-item-removed&id="+b,!0);k.send()},g:function(b){var q=c(b),k="1"===b.getAttribute("data-item-bookmark")?
"0":"1",e=new XMLHttpRequest;e.onload=function(){var c=document.querySelector("section.page");if(u.b()&&"bookmarks"===c.getAttribute("data-item-page"))d(b),n();else if(b.setAttribute("data-item-bookmark",k),u.b())c=b.querySelector("a.bookmark"),a(c);else if((c=b.querySelector("a.bookmark-icon"))&&c.hasAttribute("data-reverse-title")){var q=c.getAttribute("title");c.setAttribute("title",c.getAttribute("data-reverse-title"));c.setAttribute("data-reverse-title",q)}};e.open("POST","?action=bookmark&id="+
q+"&value="+k,!0);e.send()},B:function(a){var b=a.getAttribute("data-item-status");"read"===b?w(a):"unread"===b&&p(a)},w:function(a){(a=a.querySelector("a.show"))&&e(a)},t:function(a){(a=a.querySelector("a.original"))&&e(a)},e:function(a){var b=document.getElementById("download-item");if(b){b.innerHTML=" "+b.getAttribute("data-before-message");b.className="loading-icon";var d=new XMLHttpRequest;d.onload=function(){var a=JSON.parse(d.responseText);b.className="";if(a.result){var c=document.getElementById("item-content");
c&&(c.innerHTML=a.content);b.innerHTML=b.getAttribute("data-after-message")}else b.innerHTML=b.getAttribute("data-failure-message")};a=c(a);d.open("POST","?action=download-item&id="+a,!0);d.send()}},n:function(a){var b=new XMLHttpRequest;b.onload=function(){window.location.href=a};b.open("POST","?action=mark-all-read",!0);b.send()},r:function(a){var c=new XMLHttpRequest;c.onload=function(){for(var a=document.getElementsByTagName("article"),c=0,d=a.length;c<d;c++)b(a[c]);l=this.responseText;n()};c.open("POST",
"?action=mark-feed-as-read&feed_id="+a,!0);c.send()},C:function(){for(var a=["#current-item h1","#item-content","#listing #current-item h2","#listing #current-item .preview"],b=0;b<a.length;b++){var c=document.querySelector(a[b]);c&&(c.dir=""==c.dir?"rtl":"")}},D:function(){return t},a:function(){if(!document.hidden||!t){var a=new XMLHttpRequest;a.onload=function(){var a=0===v.length,b=!1,c=JSON.parse(this.responseText),d;for(d in c.feeds){var e=c.feeds[d];if(!v.hasOwnProperty(d)||e.time>v[d])v[d]=
e.time,"unread"===e.status&&(b=!0)}document.hidden||c.nbUnread===l&&!t?document.hidden&&!a&&b&&(t=!0,document.title="\u21bb "+document.title):(t=!1,l=c.nbUnread,n())};a.open("POST","?action=latest-feeds-items",!0);a.send()}}}}(),m=function(){function e(a){if(63!==a.keyCode&&63!==a.which&&(a.ctrlKey||a.shiftKey||a.altKey||a.metaKey))return!0;a=a.target||a.srcElement;return"INPUT"===a.tagName||"TEXTAREA"===a.tagName?!0:!1}var c=[];return{c:"",l:function(){document.onclick=function(a){a.target.hasAttribute("data-action")&&
"original"!==a.target.className&&a.preventDefault()};document.onmouseup=function(a){if(2!==a.button)if("INPUT"===a.target.nodeName&&"auto-select"===a.target.className)a.target.select();else{var b=a.target.getAttribute("data-action");if(b){m.c="mouse";var c;a:{for(element=a.target;element&&element.parentNode;)if(element=element.parentNode,element.tagName&&"article"===element.tagName.toLowerCase()){c=element;break a}c=void 0}switch(b){case "refresh-all":h.i();break;case "refresh-feed":c&&h.h(c);break;
case "mark-read":c&&g.o(c);break;case "mark-unread":c&&g.q(c);break;case "mark-removed":c&&g.p(c);break;case "bookmark":c&&g.g(c);break;case "download-item":c&&g.e(c);break;case "mark-all-read":g.n("?action=unread");break;case "mark-feed-read":g.r(a.target.getAttribute("data-feed-id"))}}}}},k:function(){document.onkeypress=function(a){if(!e(a))if(m.c="keyboard",c.push(a.key||a.which),"g"===c[0]||103===c[0])switch(c[1]){case void 0:break;case "u":case 117:window.location.href="?action=unread";c=[];
break;case "b":case 98:window.location.href="?action=bookmarks";c=[];break;case "h":case 104:window.location.href="?action=history";c=[];break;case "s":case 115:window.location.href="?action=feeds";c=[];break;case "p":case 112:window.location.href="?action=config";c=[];break;default:c=[]}else{c=[];var b=document.getElementById("current-item");switch(a.key||a.which){case "d":case 100:b&&g.e(b);break;case "p":case 112:case "k":case 107:u.f();break;case "n":case 110:case "j":case 106:u.d();break;case "v":case 118:b&&
g.t(b);break;case "o":case 111:b&&g.w(b);break;case "m":case 109:b&&g.B(b);break;case "f":case 102:b&&g.g(b);break;case "h":case 104:u.u();break;case "l":case 108:u.s();break;case "r":case 114:h.i();break;case "?":case 63:u.A();break;case "z":case 122:g.C()}}};document.onkeydown=function(a){if(!e(a))switch(m.c="keyboard",a.key||a.which){case "ArrowLeft":case "Left":case 37:u.f();break;case "ArrowRight":case "Right":case 39:u.d()}}},m:function(){document.addEventListener("visibilitychange",function(){!document.hidden&&
g.D()&&g.a()})}}}(),u=function(){function e(a){var b=pageYOffset+document.documentElement.clientHeight;(0>b-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function c(){return document.getElementById("listing")?!0:!1}return{s:function(){var a=document.getElementById("next-page");a&&a.click()},u:function(){var a=document.getElementById("previous-page");a&&a.click()},d:function(){var a=document.getElementById("next-item");if(a)a.click();
else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=0,d=a.length;b<d;b++){if("current-item"===a[b].id){b+1<d&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b+1].id="current-item",e(a[b+1]));break}}else a[0].id="current-item",e(a[0])},f:function(){var a=document.getElementById("previous-item");if(a)a.click();else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=a.length-1;0<=b;b--){if("current-item"===
a[b].id){0<=b-1&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b-1].id="current-item",e(a[b-1]));break}}else a[a.length-1].id="current-item",e(a[a.length-1])},A:function(){open("?action=show-help","Help","width=320,height=450,location=no,scrollbars=no,status=no,toolbar=no")},b:c}}();
({F:function(){},v:function(){m.k();m.l();m.m();this.j()},j:function(){var e=new XMLHttpRequest;e.onload=function(){var c=JSON.parse(this.responseText);0<c.frontend_updatecheck_interval&&(g.a(),setInterval(function(){g.a()},6E4*c.frontend_updatecheck_interval))};e.open("POST","?action=get-config",!0);e.send(JSON.stringify(["frontend_updatecheck_interval"]))}}).v();

@ -85,7 +85,7 @@ Miniflux.Event = (function() {
currentItem && Miniflux.Item.DownloadContent(currentItem);
break;
case 'mark-all-read':
Miniflux.Item.MarkListingAsRead("?action=unread");
Miniflux.Item.MarkAllAsRead('?action=unread');
break;
case 'mark-feed-read':
Miniflux.Item.MarkFeedAsRead(e.target.getAttribute("data-feed-id"));

@ -298,22 +298,15 @@ Miniflux.Item = (function() {
request.open("POST", "?action=download-item&id=" + item_id, true);
request.send();
},
MarkListingAsRead: function(redirect) {
var articles = document.getElementsByTagName("article");
var listing = [];
for (var i = 0, ilen = articles.length; i < ilen; i++) {
listing.push(getItemID(articles[i]));
}
MarkAllAsRead: function(redirect) {
var request = new XMLHttpRequest();
request.onload = function() {
window.location.href = redirect;
};
request.open("POST", "?action=mark-items-as-read", true);
request.send(JSON.stringify(listing));
request.open("POST", "?action=mark-all-read", true);
request.send();
},
MarkFeedAsRead: function(feed_id) {
var request = new XMLHttpRequest();

@ -159,12 +159,19 @@ Router\post_action('mark-item-unread', function() {
});
// Mark all unread items as read
Router\get_action('mark-as-read', function() {
Router\get_action('mark-all-read', function() {
Model\Item\mark_all_as_read();
Response\redirect('?action=unread');
});
// Mark all unread items as read (Ajax request)
Router\post_action('mark-all-read', function(){
Model\Item\mark_all_as_read();
Response\json(array('OK'));
});
// Mark all unread items as read for a specific feed
Router\get_action('mark-feed-as-read', function() {
@ -187,13 +194,6 @@ Router\post_action('mark-feed-as-read', function() {
Response\raw($nb_items);
});
// Mark sent items id as read (Ajax request)
Router\post_action('mark-items-as-read', function(){
Model\Item\mark_items_as_read(Request\values());
Response\json(array('OK'));
});
// Mark item as read and redirect to the listing page
Router\get_action('mark-item-read', function() {

@ -86,11 +86,15 @@ The following `phpunit.xml` is used to run phpunit on a linux system with apache
```
You can run the tests by executing phpunit within the Miniflux directory:
Some tests don't run with every browser. You have to exclude those tests by using the ```--exclude-group``` commandline parameter. The following exclude groups exists:
* moz_unsupported (Due to https://github.com/SeleniumHQ/selenium/issues/386)
* ie_unsupported (Due to https://code.google.com/p/selenium/issues/detail?id=4973)
You can run the tests by executing phpunit within the Miniflux directory:
```bash
/usr/local/bin/phpunit
/usr/local/bin/phpunit --exclude-group ie_unsupported
PHPUnit 4.4.0 by Sebastian Bergmann.

@ -377,18 +377,6 @@ function mark_all_as_removed()
->save(array('status' => 'removed', 'content' => ''));
}
// Mark only specified items as read
function mark_items_as_read(array $items_id)
{
Database::get('db')->startTransaction();
foreach ($items_id as $id) {
set_read($id);
}
Database::get('db')->closeTransaction();
}
// Mark all items of a feed as read
function mark_feed_as_read($feed_id)
{

@ -9,7 +9,7 @@
<a href="?action=unread&amp;order=updated&amp;direction=<?= $direction == 'asc' ? 'desc' : 'asc' ?>"><?= tne('sort by date %s(%s)%s', '<span class="hide-mobile">',$direction == 'desc' ? t('older first') : t('most recent first'), '</span>') ?></a>
</li>
<li>
<a href="?action=mark-as-read" data-action="mark-all-read"><?= t('mark all as read') ?></a>
<a href="?action=mark-all-read" data-action="mark-all-read"><?= t('mark all as read') ?></a>
</li>
</ul>
</div>
@ -28,7 +28,7 @@
<?php endforeach ?>
<div id="bottom-menu">
<a href="?action=mark-as-read" data-action="mark-all-read"><?= t('mark all as read') ?></a>
<a href="?action=mark-all-read" data-action="mark-all-read"><?= t('mark all as read') ?></a>
</div>
<?= \PicoFarad\Template\load('paging', array('menu' => $menu, 'nb_items' => $nb_items, 'items_per_page' => $items_per_page, 'offset' => $offset, 'order' => $order, 'direction' => $direction)) ?>

File diff suppressed because it is too large Load Diff

@ -98,7 +98,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -153,7 +153,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -169,7 +169,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -217,7 +217,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -233,7 +233,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -288,7 +288,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -304,7 +304,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -352,7 +352,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -368,7 +368,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -423,7 +423,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -439,7 +439,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -487,7 +487,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -503,7 +503,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -558,7 +558,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -574,7 +574,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -622,7 +622,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -638,7 +638,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -693,7 +693,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -709,7 +709,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -757,7 +757,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -773,7 +773,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -828,7 +828,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -844,7 +844,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -892,7 +892,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -908,7 +908,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -963,7 +963,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -979,7 +979,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -1027,7 +1027,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -1043,7 +1043,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -1098,7 +1098,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -1114,7 +1114,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -1162,7 +1162,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -1837,7 +1837,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -1853,7 +1853,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -1908,7 +1908,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -1924,7 +1924,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -1972,7 +1972,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.3&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##93</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -1988,7 +1988,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.6&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##94</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>
@ -2043,7 +2043,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.html#v1.0.7&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##95</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>0</value>
<value></value>
@ -2059,7 +2059,7 @@
&lt;li&gt;&lt;a href=&quot;http://miniflux.net/changes.htm#v1.0.8&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot; &gt;ChangeLog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</value>
<value>##TIMESTAMP##96</value>
<value>read</value>
<value>unread</value>
<value>1</value>
<value>1</value>
<value></value>

@ -7,10 +7,6 @@ class keyboardShortcutTest extends minifluxTestCase
protected function setUp()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
parent::setUp();
}
@ -38,12 +34,11 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testNextItemShortcutA()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium');
}
$articles = $this->getArticles();
$this->setArticleAsCurrentArticle($articles[0]);
@ -60,6 +55,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testNextItemShortcutB()
{
$articles = $this->getArticles();
@ -78,6 +76,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testNextItemShortcutC()
{
$articles = $this->getArticles();
@ -96,6 +97,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testPreviousItemA()
{
$articles = $this->getArticles();
@ -114,6 +118,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testPreviousItemB()
{
$articles = $this->getArticles();
@ -132,6 +139,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testPreviousItemC()
{
$articles = $this->getArticles();
@ -150,6 +160,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testNextStopsAtLastArticle()
{
$articles = $this->getArticles();
@ -169,6 +182,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testPreviousStopsAtFirstArticle()
{
$articles = $this->getArticles();
@ -188,12 +204,12 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group ie_unsupported
* @group moz_unsupported
*/
public function testSHIFTModifierIsDisabled()
{
if ($this->getBrowser() === "iexplore") {
$this->markTestSkipped('Modifier key test is not supported with Internet Explorer [Selenium issue #4973].');
}
$articles = $this->getArticles();
$this->setArticleAsCurrentArticle($articles[0]);
@ -209,12 +225,12 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group ie_unsupported
* @group moz_unsupported
*/
public function testALTModifierIsDisabled()
{
if ($this->getBrowser() === "iexplore") {
$this->markTestSkipped('Modifier key test is not supported with Internet Explorer [Selenium issue #4973].');
}
$articles = $this->getArticles();
$this->setArticleAsCurrentArticle($articles[0]);
@ -230,12 +246,12 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group ie_unsupported
* @group moz_unsupported
*/
public function testCTRLModifierIsDisabled()
{
if ($this->getBrowser() === "iexplore") {
$this->markTestSkipped('Modifier key test is not supported with Internet Explorer [Selenium issue #4973].');
}
$articles = $this->getArticles();
$this->setArticleAsCurrentArticle($articles[0]);
@ -251,6 +267,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->expectedDataSet = static::$databaseTester->getDataSet();
}
/**
* @group moz_unsupported
*/
public function testShortcutsOnInputFiledAreDisabled()
{
$url = $this->getURLPagePreferences();
@ -267,6 +286,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->ignorePageTitle = TRUE;
}
/**
* @group moz_unsupported
*/
public function testGoToBookmarks()
{
$this->sendKeysAndWaitForPageLoaded('gb');
@ -279,6 +301,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->ignorePageTitle = TRUE;
}
/**
* @group moz_unsupported
*/
public function testGoToHistory()
{
$this->sendKeysAndWaitForPageLoaded('gh');
@ -291,6 +316,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->ignorePageTitle = TRUE;
}
/**
* @group moz_unsupported
*/
public function testGoToUnread()
{
$this->sendKeysAndWaitForPageLoaded($this->getShortcutGoToUnread());
@ -303,6 +331,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->ignorePageTitle = TRUE;
}
/**
* @group moz_unsupported
*/
public function testGoToSubscriptions()
{
$this->sendKeysAndWaitForPageLoaded('gs');
@ -314,6 +345,9 @@ class keyboardShortcutTest extends minifluxTestCase
$this->ignorePageTitle = TRUE;
}
/**
* @group moz_unsupported
*/
public function testGoToPreferences()
{
$this->sendKeysAndWaitForPageLoaded('gp');

@ -64,12 +64,11 @@ class pageBookmarksTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkReadBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -98,12 +97,11 @@ class pageBookmarksTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkUnreadBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -133,12 +131,11 @@ class pageBookmarksTest extends minifluxTestCase
}
/**
* @group moz_unsupported
*/
public function testUnbookmarkReadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -167,12 +164,11 @@ class pageBookmarksTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testUnbookmarkUnreadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadBookmarked();
$this->setArticleAsCurrentArticle($article);

@ -75,12 +75,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkReadNotBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkReadNotBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -109,12 +108,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkReadBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -143,12 +141,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadNotBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkUnreadNotBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -177,12 +174,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkUnreadBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -211,12 +207,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_BookmarkReadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testBookmarkReadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -245,12 +240,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_BookmarkUnreadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testBookmarkUnreadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -279,12 +273,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testUnbookmarkReadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -313,12 +306,11 @@ class pageFirstFeedTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkUnreadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testUnbookmarkUnreadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadBookmarked();
$this->setArticleAsCurrentArticle($article);

@ -64,12 +64,11 @@ class pageHistoryTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadNotBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkUnreadNotBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -98,12 +97,11 @@ class pageHistoryTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkUnreadBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkUnreadBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -132,12 +130,11 @@ class pageHistoryTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_BookmarkReadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testBookmarkReadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -166,12 +163,11 @@ class pageHistoryTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_UnbookmarkReadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testUnbookmarkReadArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleReadBookmarked();
$this->setArticleAsCurrentArticle($article);

@ -64,12 +64,11 @@ class pageUnreadTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkReadNotBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkReadNotBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadNotBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -98,12 +97,11 @@ class pageUnreadTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_MarkReadBookmarkedArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testMarkReadBookmarkedArticleKeyboard()
{
if ($this->getBrowser() === "firefox") {
$this->markTestSkipped('The key property isn\'t properly set with selenium.');
}
$article = $this->getArticleUnreadBookmarked();
$this->setArticleAsCurrentArticle($article);
@ -132,12 +130,11 @@ class pageUnreadTest extends minifluxTestCase
$this->expectedDataSet = $this->getDataSet('expected_BookmarkUnreadArticle', 'fixture_feed2');
}
/**
* @group moz_unsupported
*/
public function testBookmarkUnreadArticleKeyboard()