* Add jext-axe package and introduce a11y testing
Automated a11y testing is NOT comprehensive. We cannot expect this to
even scratch the surface of potential a11y issues.
However, we can expect to find a percentage of issues that are currently
flying under the radar. Adopting some automation around a11y testing
also allows us to use CI to find a11y regressions -- which should be
really handy.
I've never really used Jest before, and Preact seems to make it a little
more complicated, but as far as I can tell, this is a decent way to add
at least some minor automated a11y testing.
* Add doc about automated a11y tests
* added tests to specs
* added view logic
* added controller/model functionality
* minor tweak to tagadjustment view
* adjusted mod view to reduce query
* added instance variables to controller
* show already adjusted tags in mod view
* removed unnecessary ifs from mods controller
* catch and display errors to tag adjustment forms
* update specs and refactor
* Add infinite scroll to followers list (#258)
* Refactor fetchNext function for clarity (#258)
* Sepparate following tab into multiple tabs to support infinite scroll (#258)
* Add infinite scroll to following pages (#258)
* Add tests to infinite scroll api
* Refactor dashboard loading text
* Refactor infine scroll function
* Fix duplicated entries problem in infinite scrolling
* Switch randomized attributes to sequential to avoid InvalidRecord error
* Add acceptance tests for infinite scroll
* Remove unused following method
* parameterize limit per page for followers and followings
* Split follows endpoint into followers and followings
* Authenticate user with api key in followers and followings
* Split followers endpoint into users and organizations
* Add redundant html to sublist partial
* Speed up infinite scroll tests
* Refactor api json responses to use partials
* Authenticate api user before follows create
* Resolve conflicts on scrolling js
* Improve partials organization and fix organization username bug
* Improve readability of unauthorized test
* Use let! to create scrolling test data
* Fix not working podcasts link
* Refactor initScrolling to remove linting errors
* Fix codeclimate coding style issue
* Test tags forms and podcasts hyperlinks
* Fix eslint issue with double equals
* Improve before_action usage and readability
* Add - to support dash character in JSitor liquid tag
* Edit spec/liquid_tags/jsitor_tag_spec.rb
* Add support for link with hyphen id in jsitor liquid tag
* Add rate_limit_follow_count_daily to SiteConfig
* Add favicon_url to SiteConfig
* Add logo_svg to SiteConfig
* Add staff_user_id to SiteConfig
* Add default_site_email to SiteConfig
* Add social_networks_handle to SiteConfig
* Add ga_view_id and ga_fetch_rate to SiteConfig
* Add mailchimp newsletters IDs to SiteConfig
* Add periodic_email_digest_max, periodic_email_digest_min to SiteConfig
* Redirect /internal to /internal/articles avoiding annoying 404
* Set the navbar on two rows
* Add :main_social_image to SiteConfig and to the internal view
* Add simple tests
* Ameliorate the UI
* Move cached_followed_tag_names to Redis and change key to use following_tags_count rather than updated_at
* use last_followed_at for cache key as well
* format last_followed_at with rfc3339
* Redo JSitor
- can now accept full url with params
- added more test
- redo jsitor guide
* Jsitor redo guide
- moved below JSFiddle
- add more instructions
* Refactor JSitor liquid tag
- Change the iframe size to 400
- can accept ID with or without params
- added ID_REGEX to check for id
- add more information on error
- added more test
- test for id with invalid link
- test for id with params
- test for id without params
* Refactor
- simplified regex, removed unnecessary groupings
- changed method name from link_valid? to validate_link
- changed error message
* Turn CacheBuster into a module
This class used no internal state, so repeatedly creating short-lived objects seems wasteful.
* Consistently use string interpolation and parenthesis
* Destructure arrays into meaningful names, formatting
* Fix request spec for internal classified listings controller
Interestingly this works when asserting directly on the module, but not on a double.
Asserting directly in the module seems sufficient for this test so the indirection
was removed.
* Turn CacheBuster into a module
This class used no internal state, so repeatedly creating short-lived objects seems wasteful.
* Fix specs after rebasing