* Use visitAndWaitForUserSideEffects to ensure async responses are in
The `visit(url, options)` call here (rather than the preferred
loginAndVisit), was used in order to pass a custom user agent in the
request (to test for forem mobile responses).
The `loginAndVisit(url)` command calls another command
visitAndWaitForUserSideEffects, which ensures the async requests have
returned before processing the remaining steps, and accepts the needed
options (which `loginAndVisit(url)` does not).
The test had been failing intermittently when user data was not loaded
before being
checked (https://app.travis-ci.com/forem/forem/builds/243352021 most
recently) and was reproducible for me locally.
Pass the runtimeStub in options to the command, waiting for user side effects.
* Wait for userData when logged out before inspecting it
* Add optional argument to visitAndWait when user logged out
This permits handling the base data (for logged out users) without
waiting on notifications or counts.
Remove the now unneeded inlining from the logged out forem mobile test.
* Wait for ForemMobile to be added before accessing it
* Translation for "on Video"
* Moving dashboard.loading to core.loading to keep code DRY
* Translations for views/videos/new.html.erb
* Reverting the changes on app/views/dashboards/_sublist.html.erb
* Adding the dashboard.loading translations back
* Fixing some merge conflicts + sorting the dashboard translations
* Fixing the contact text on views/videos/new
* Using the full path instead of the lazy load
* create new pack, handle user follow buttons, use pack on article page, remove initializeUserFollowButts
* init all follow button types, add pack to tag index and podcast episode pages
* add pack to all relevant pages, listen for newly inserted follow buttons
* change to searchParams to remove follow button initializer calls
* fix bug with tag page, add pack to notifications page
* fix issue with follow back inner text
* update cypress specs
* run the followbuttons code on sponsors page
* remove extra foreach
* add test for follow from article sidebar
* add test for follow and unfollow tag
* add test for the tag index page
* add spec for organisation profile follow
* add tests for follow buttons in search results
* add tests for notification follows
* commit missed file - woops
* show login modal if user is logged out when they click
* add cypress tests for logged out state
* change tag button initialization
* remove data-button-initialized
* init follow buttons from base pack
* handle the case where multiple follow buttons exist on a page for the same user
* account for instantclick and userdata not being defined, lower coverage for jest
* use getInstantClick
* fix issue with set initialisation
* only listen for mutations in areas we know follow buttons may be added dynamically
* small refactors
* add login and visit helper, add sign out command
* refactors to the admin tests
* update article tests
* update dashboard flows
* update feed nav and listings flows
* update logout test
* update mod and profile flows
* update publishing flows
* update reading list, search and tag index flows
* wait for sign out, refactor
* break chat message tests into more manageable chunks
* Rename SiteConfig
* More renaming
* Update spec
* Update mandatory settings mapping
* More renaming
* e2e test fixes
* You have a rename, and you have a rename
* Spec fix
* More changes
* Temporarily disable specs
* After-merge update
* Undo rename for migration
* undo rename of DUS
* Fix DUS
* Fix merge problem
* Remove redundant DUS
* Fix specs
* Remove unused code
* Change wrong class name
* More cleanup
* Re-add missing values to constant
* Fix constant
* Fix spec
* Remove obsolete fields
* Add accidentally removed field
* Update spec
* Move methods from Settings::General to ForemInstance
* Remove unneeded model
* Change mentions of 'site config'
* Navigate back to dashboard instead of article.path
* Set mainImage to null to remove image properly
* Use dashboard_path over string path
Co-authored-by: Michael Kohl <me@citizen428.net>
* Handle apostrophe edge cases
* Allow main image to be set
* Add new test for removing article cover img
* Use potentially less flaky find
* Use findByAltText instead of get
Co-authored-by: Michael Kohl <me@citizen428.net>
* write tests for invite-only mode and auth-providers
* text edits
* modify specs in light of new e2e database setup
* Still working things out
* Added the admin user name to the e2e fixture data.
* Added testid for config sections.
* Fixed up test to use cypress-testing-library APIs.
* Fixed unsetting invite only mode, still need to reset it at end of test.
* Small fix for local e2e development.
* Complete all tests; generalize updateAdminConfig cypress command
* correct spec
* Complete implementation
* Address code review comments
* address code review comments #2
Co-authored-by: Nick Taylor <nick@dev.to>
* Added custom seed task
* Added a test for the initial login for the intial admin of a forem instance.
* Renamed admin login seed data file.
* Pulled functions out of main Cypress plugin file and import them now.
* Added some comments.
* Added a comment about Cypress tasks requiring a return value to be considered successful.
* Moved admin_login_setup seed file to spec folder.
* Made change requests in regards to rake task.
* Fixed reference to SiteConfig
* Created the seeder class to be shared for all seed files.
* Added a missing param to function comment.
* Fixed seeder require in e2e test seed file.
* Fixed seeder require in seeds.rb. Why is Rails.root required?
* Added an environment guard for not being production in the e2e seed task.
* Made seeder require relative.
* Trying something for the Elastic Search issue in CI.
* Revert "Trying something for the Elastic Search issue in CI."
This reverts commit 7cb2a963c8ac1f9242c612a1b9fe8ff814605df6.
* Search indices are now removed via bundle exec rake search:destroy
* Now rake search:destroy is used in the Cypress task for resetting data as well.
* Moved Seeder class to app/lib
* Added cypress-rails
* Got two flows working with db rollbacks.
* Trimmed down the e2e dataset for now.
* Added a custom Cypress command to encompass test setup.
* removed unused e2e rake task
* added some user login/password e2e tests.
* Added a note about Cypress not cleaning cookies, so we do for the moment.
* Removed code no longer required.
* Removed comment in test that is no longer pertinent to the test suite.
* Removed data cleaning plugins as cypress rails gem handles it now.
* Added @citizen428's recommendation got raising an error if trying to seed production.
* Temporarily have paralleziation of e2e tests disabled to figure out cypres-rails/knapsack pro integration.
* Doh! Forgot a semi-colon in the Travis config.
* Added a comment about not integrating cypress-rails/knapsack pro right now.
* Removed knapsack pro npm package for now as we aren't using it.
* Reworded comment about cypress-rails/kanpsackpro.
* Removed seeding for tags to follow for onboarding in e2e seed data.
* Made pree2e script e2e:setup so it only runs explicitly when needed.
* Renamed bin/e2e to bin/e2e-ci.
* Created a new script for local e2e testing.
* Removed RAILS_ENV as it's in the e2e-ci script already.
* Fixed an auto corrected command.
* Fixed wording in e2e script prompt.
* Removed bundle exec rake data_updates:run that I had added. Doesn't appear to be necessary.
* Added missing new lines.
* Renamed e2e seed file and only use that one now. THere are no others.
* Some script cleanup.
* Added a check for the E2E environment so as to not pollute system tests.
* Now e2e test server cleanup occurs when the server shuts down.
* Put puts as this is really just for testing.
* Put environment variable in the proper place for runnning bundle exec.
* Added a check to only run for E2E tests.
* Some bash script formatting.
* Removed copy paste irrelevant comments.
* Updated e2e server shutdown message.
* Now a data-testid attribute is used for finding the user account errors panel.
* Made test selectors ignore casing of text.
* Removed prod paranoia check in e2e seed file.
* Refactored spec to use new cy.loginUser(user) command.
* Update app/lib/seeder.rb
Co-authored-by: Michael Kohl <citizen428@dev.to>
* Fixed flakiness that @aitchiss was experiencing.
* Rubocop fix.
* Due to a Cypress issue, fixing cookie clearing with another tweak.
* Bumped the wait time to 500ms if cookies don't clear.
* Added a 'bundle check' to the bin/e2e script as suggested by @katiedavis.
* Removed some white space
Co-authored-by: Michael Kohl <citizen428@dev.to>
* Added test run artifacts to git ignore.
* Added Cypress run to Travis.
* Added the start-server-and-test package.
* Added e2e ci scripts.
* Split up commands.
* Testing e2e after rspecs on same build node.
* Move Cypress back to node 0 for Knapsack.
* Added folders for build artifacts for failed E2E tests.
* Simplified e2e for CI
* Using knapsack-pro-cypress now.
* Added data-testid to sign up form for tests.
* Added forem secret for CI
* Updated initial admin fixture.
* Reworked test to be a signup test. wip.
* Added cypress file upload package.
* added fixture for admin profile image.
* Updated forem secret for tests.
* Added Cypress file upload to Cypress commands.
* Changed test to initial sign up for the first admin user.
* Fixed test to ensure there are no signup errors.
* Added some logging to see what's up.
* Added some comments to the test.
* Set Chrome web security to false to prevent CORS errors.
Co-authored-by: rhymes <rhymes@hey.com>
* Set baseUrl for Cypress tests.
* Fixed login form for tests.
* Added fixture data for initial admin credentials.
* First e2e test.
* Fixed a typo in a comment.
* Using an input of type submit like the login previously had was fine.
* Added a check to ensure user is redirected to the home page.
* Forgot to commit adding @testing-library/cypress
* Renamed and move login flow under loginFlows in integrations.
* Added testing library to support files so it does not need to be imported into every test explicitly by the test writer.
* Added some more Cypress related files that will be required for testing going forward.
* Took onboarding into account when checking the URL post login.