Commit graph

465 commits

Author SHA1 Message Date
Travis Ralston
8db7766a40
Add safety to the spotlight search dialog (#9177)
* Add safety to the spotlight search dialog

Fixes https://github.com/vector-im/element-web/issues/22851

This test was triggering the mentioned bug only occasionally because it was dependent on when the search settled: if it settled early then the length was wrong. In testing, the dialog was caught multiple times to have passed the length chat but update to show duplicated results before the test closed the client, indicating a race condition within the tests.

To fix this, we just make sure everything settles before moving on. We do this on unaffected tests too to ensure they don't regress later.

The affected test was "should find group DMs by usernames or user ids".

* Update cypress/e2e/spotlight/spotlight.spec.ts

Co-authored-by: Robin <robin@robin.town>

Co-authored-by: Robin <robin@robin.town>
2022-08-11 22:26:25 +00:00
Travis Ralston
d21498de94
Add even more stability to view source test case (#9176)
Follow-on from https://github.com/matrix-org/matrix-react-sdk/pull/9156 after seeing more failures from the test case.
2022-08-11 15:26:22 -06:00
kegsay
ed4286aa93
cypress: up the rate limit values for the synapse container (#9166)
Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-08-11 14:08:41 +01:00
Travis Ralston
988cd335db
Set Synapse log level to DEBUG for cypress tests temporarily (#9173)
Until we narrow down the remaining flake cases this will give us a chance at identifying real-world flake issues.

`DEBUG` is the noisiest level.
2022-08-11 06:19:51 +00:00
Michael Telatynski
4e30d3c0fc
Fix space panel subspace indentation going missing (#9167)
* Fix space panel subspace indentation going missing

* Add cypress test around subspaces in space panel

* Add cypress test around subspaces in space panel

* Fix bad selector

* Fix aria axe violation heading-order

* Fix test

* Remove it.only
2022-08-10 16:29:53 +01:00
Michael Telatynski
fdde6b1428
Cypress test stability improvements (#9156)
* Make cypress hidden event test more reliable

* Make timeline tests more stable
2022-08-10 09:40:17 +01:00
Michael Telatynski
e63072e21f
Fixes around URL tooltips and in-app matrix.to link handling (#9139)
* Add regression test for tooltipify exposing raw HTML

* Handle m.to links involving children better

* Comments

* Fix mistaken assertion
2022-08-09 15:37:55 +01:00
kegsay
147ec49ff5
cypress: log stdout/stderr when docker exec fails (#9154)
Otherwise you cannot debug anything with errors like:
```
> Command failed: docker exec 134c9a0afd7dadd0b82ce69b4d72d3d6d8ca1b211540d4390a88357b68fa03b9 pg_isready -U postgres
```
Now we include the stdout/err prior to logging this.
2022-08-09 15:22:32 +01:00
Travis Ralston
32478db57e
Migrate the hidden read receipts flag to new "send read receipts" option (#9141)
* Migrate the hidden read receipts flag to new "send read receipts" option

For safety.

* Appease linter & ignore guests

* `void`
2022-08-08 13:48:28 -06:00
Michael Telatynski
e08b11b9c9
Make Spaces cypress tests less flaky (#9138) 2022-08-08 16:07:55 +00:00
Janne Mareike Koschinski
cb15222594
Make percy snapshots for user onboarding more reliable (#9132)
* Make percy snapshots for user onboarding more reliable
* Increase stability of lazy loading test

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-08-08 13:17:04 +02:00
Johannes Marbach
4a14882938
Move pin drop out of labs (PSG-664) (#9135)
* Move pin drop out of labs (PSG-664)

Signed-off-by: Johannes Marbach <johannesm@element.io>

* Regenerate strings

Signed-off-by: Johannes Marbach <johannesm@element.io>
2022-08-08 10:57:38 +02:00
Michael Telatynski
e864dbfacf
Fix highlights not being applied to plaintext messages (#9126)
* Fix highlights not being applied to plaintext messages

* Add percy test for search result highlighting

* Fix percy target

* Update timeline.spec.ts
2022-08-05 07:08:56 +00:00
Michael Weimann
ed8ccb5d80
Start DM on first message (#8612) 2022-08-04 08:19:52 +02:00
Janne Mareike Koschinski
b62413d725
The Welcome Home Screen: Dedicated Download Apps Dialog (#9120)
* Implement new download apps dialog
* Added screenshot test for app download dialog
2022-08-02 16:08:02 +02:00
Michael Telatynski
6796375b10
Fix dismissing edit composer when change was undone (#9109)
* Fix dismissing edit composer when change was undone

* Add tests
2022-08-02 14:54:40 +01:00
Šimon Brandner
3991ce96e4
Don't enumerate Cypress tests (#9123) 2022-08-01 17:59:20 +00:00
Michael Telatynski
d5db131eef
Spike AXE A11Y testing in Cypress (#9111)
* Spike AXE A11Y testing in Cypress

* Fix NewRoomIntro breaking html/aria list rules

* Fix HeaderButtons breaking aria role semantics rules

* missing type

* Switch left panel from aside to nav and include space panel

* Give the page a main heading of the room name when viewing a room

* Use header landmark on RoomHeader

* Improve aria attributes on composer when autocomplete is closed

* Fix aria-owns on RoomHeader

* Give Spinner an aria role

* Give server picker help button an aria label

* Improve auth aria attributes and semantics

* Improve heading semantics in use case selection screen

* Fix autocomplete attribute to be valid

* Fix heading semantics on login page

* Improve Cypress axe testing

* Add axe tests

* Stop synapse after the timeline tests

* Await spinners to fade before percy snapshotting timeline tests

* Improve naming of plugin

* Update snapshots

* Fix accidental heading change

* Fix double synapse stoppage

* Fix Cypress timeline avatar assertions to be DPI agnostic

* Fix aria attributes on date separators

* delint

* Update snapshots

* Revert style change

* Skip redundant call
2022-08-01 08:31:14 +01:00
Suguru Hirahara
82fb21aff5
Apply inline start padding to selected lines on modern layout only (#9006) 2022-08-01 08:19:22 +02:00
Šimon Brandner
fb25b3729d
Peek into world-readable rooms from spotlight (#9115) 2022-07-29 16:25:28 +02:00
Michael Telatynski
f566c600e2
Port remaining Puppeteer tests over to Cypress (#9104)
* Port remaining Puppeteer tests over to Cypress

* Remove puppeteer support files

* Fix lifecycle matrixclientpeg setup race condition

* Alternative solution to the lifecycle problem

* Dismiss the notifications toast
2022-07-29 14:03:25 +00:00
Janne Mareike Koschinski
1e4c336fed
New User Onboarding Task List (#9083)
* Improve type of AccessibleButton to accurately represent available props
* Update analytics events
2022-07-29 11:43:29 +00:00
Michael Telatynski
ca1d9729fd
Extract dockery bits from Cypress' synapsedocker plugin (#9103)
* Extract dockery bits from Cypress' synapsedocker plugin

* Update cypress/plugins/docker/index.ts

Co-authored-by: David Baker <dbkr@users.noreply.github.com>

Co-authored-by: David Baker <dbkr@users.noreply.github.com>
2022-07-27 15:22:14 +00:00
Kerry
19eb491c93
skip flaky can reply with voice message test case (#9105) 2022-07-26 16:36:43 +00:00
Šimon Brandner
60696d78ca
Support for sending voice messages as replies and in threads (#9097)
* Support for sending voice messages as replies and in threads

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Add tests

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-07-26 10:38:05 +02:00
Šimon Brandner
b4b146f551
Show a back button when viewing a space member (#9095) 2022-07-25 11:46:19 +00:00
Suguru Hirahara
92fce71e39
Align the right edge of info tile lines with normal ones on IRC layout (#9058)
* Apply inline start margin to info event tile line to align the right edge with normal event tile lines

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Rename the variable

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Add a test to check inline start margin

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Rerun CI

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Improve tests a little bit

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
2022-07-25 10:05:32 +01:00
Kerry
0a8adb6bfe
Add e2e tests for pin drop location share (#9081)
* pin drop location test case

* own static location test

* remove unused bots

* lint

* enable labs flag

* remove own location test bc geolocation perms are hard
2022-07-25 08:13:47 +00:00
Šimon Brandner
787ace9dc5
Add Reply in thread button to the right-click message context-menu (#9004) 2022-07-23 12:13:49 +00:00
Šimon Brandner
dca4b8b291
Fix wrong buttons being used when exploring public rooms (#9062) 2022-07-20 12:48:31 +02:00
Kerry
be0f4a1fe5
add cypress test case for simple poll flow (#9073)
* add cypress test case for simple poll flow

* tidy comments

* actually correct comments

* add polls x thread test

* tweak comments

* pr improvements
2022-07-20 07:56:52 +00:00
Michael Telatynski
42ff9d6dc8
Move Lazy Loading tests from Puppeteer to Cypress (#8982)
* Remove Puppeteer Lazy Loading tests

* Remove Puppeteer Lazy Loading tests

* Remove Puppeteer Lazy Loading tests

* Stash lazy loading cypress tests

* Stash lazy loading cypress tests

* Update cypress-real-events

* Stash offline-less test

* Add offline/online'ing
2022-07-18 13:16:44 +01:00
Suguru Hirahara
38a913488f
Improve clickability of view source event toggle button (#9068)
* Improve clickability of view source event toggle button

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Fix compression

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Make it easy to select subsequent events

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
2022-07-18 09:41:01 +02:00
Suguru Hirahara
b90ea87d11
Re-add inline start padding to EventTile_line of GenericEventListSummary (#9063) 2022-07-16 12:15:12 +00:00
Suguru Hirahara
161a333a51
Improve clickability of "collapse" link button on bubble layout (#9037) 2022-07-16 09:31:29 +00:00
Janne Mareike Koschinski
f5f79158ed
Implement Use Case Selection screen (#8984)
* Introduce new splash page wrapper
* Introduce new use case selection screen
2022-07-13 15:43:44 +02:00
Šimon Brandner
7f07443161
Re-add timeline.spec.ts (#9040) 2022-07-11 12:58:20 +00:00
Michael Telatynski
7fb48d24e4
Upgrade to Cypress 10 (#9008)
* Upgrade to Cypress 10

* Remove stale comment
2022-07-08 13:14:13 +01:00
Šimon Brandner
e65409861a
Don't show the same user twice in Spotlight (#8978)
Co-authored-by: Janne Mareike Koschinski <janne@kuschku.de>
2022-07-06 12:07:10 +00:00
Andy Balaam
08c607718d
Attempt to set the language when setting up Cypress tests (#8964) 2022-07-05 11:14:24 +01:00
Šimon Brandner
88afd552d8
Delabs Show current avatar and name for users in message history (#8764)
Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-07-04 19:37:48 +00:00
Eric Eastwood
a5871206fa
Add support for JSX in stuff we import in Cypress test code (#8738)
* Add support for JSX in stuff we import in Cypress test code

Spawning from:

 - https://github.com/matrix-org/matrix-react-sdk/pull/8354#discussion_r883260722
 - https://github.com/matrix-org/matrix-react-sdk/pull/8354#discussion_r878660677

* Add problem import

* Inherit from existing type definitions

See https://github.com/matrix-org/matrix-react-sdk/pull/8738#discussion_r887350469

* Specify `commonjs`

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Remove `mxSettingsStore` as it's no longer needed

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-06-30 16:23:45 +00:00
Janne Mareike Koschinski
d4a4eeaf63
Allow finding group DMs by members in spotlight (#8922) 2022-06-30 11:44:56 +02:00
Michael Weimann
7e47749ce2
Migrate crypto test to cypress (#8833) 2022-06-30 10:59:25 +02:00
Janne Mareike Koschinski
8b841951db
Move New Search Experience out of beta (#8859) 2022-06-28 12:02:08 +02:00
Travis Ralston
d7969a6dd3
Keep clicks on pills within the app (#8917)
* Keep clicks on pills within the app

* Add a regression test
2022-06-28 09:06:26 +02:00
Janne Mareike Koschinski
8cceda66ee
Make cypress tests for spotlight less flaky (#8856) 2022-06-17 11:08:17 +02:00
Janne Mareike Koschinski
5096e7b992
Integrate searching public rooms and people into the new search experience (#8707)
* Implement searching for public rooms and users in new search experience
* Implement loading indicator for spotlight results
* Moved spotlight dialog into own subfolder
* Extract search result avatar into separate component
* Build generic new dropdown menu component
* Build new network menu based on new network dropdown component
* Switch roomdirectory to use new network dropdown
* Replace old networkdropdown with new networkdropdown
* Added component for public room result details
* Extract hooks and subcomponents from SpotlightDialog
* Create new hook to get profile info based for an mxid
* Add hook to automatically re-request search results
* Add hook to prevent out-of-order search results
* Extract member sort algorithm from InviteDialog
* Keep sorting for non-room results stable
* Sort people suggestions using sort algorithm from InviteDialog
* Add copy/copied tooltip for invite link option in spotlight
* Clamp length of topic for public room results
* Add unit test for useDebouncedSearch
* Add unit test for useProfileInfo
* Create cypress test cases for spotlight dialog
* Add test for useLatestResult to prevent out-of-order results
2022-06-15 16:14:05 +02:00
Michael Telatynski
d81e2cea14
Remove unused sessionStorage layer (#8834)
* Remove unused sessionStorage layer

* Update global.d.ts

* Fix tests
2022-06-14 21:29:24 +01:00
Michael Telatynski
b03aa2ebf5
Move room directory Puppeteer tests over to Cypress (#8832)
* Fix user view percy test by sticking the user avatar colour

* Move room directory Puppeteer tests over to Cypress

* Consolidate import

* Fix tests

* Grab default widths

* Tweak Percy CSS mechanism
2022-06-13 19:25:39 +01:00
Travis Ralston
4171c008a4
Convert sticker end-to-end tests to Cypress (#8807)
* Convert sticker end-to-end tests to Cypress

Reference materials:
* https://www.cypress.io/blog/2020/02/12/working-with-iframes-in-cypress/
* https://github.com/cypress-io/cypress/issues/136
* https://docs.cypress.io/api/commands/origin#Other-limitations

Ideally we'd be able to use `cy.origin()` to jump into the iframe, but it's explicitly not supported. Instead we disable web security as instructed by cypress because it's our only reasonable option here. Thankfully, disabling web security doesn't appear to remove the crypto libraries from the browser so we can still function in that respect.

Rationale for why we can't just serve the sticker picker off the app domain is included in the code.

* Appease the linter

* More linter appeasement
2022-06-10 09:24:15 -06:00
Michael Telatynski
d3fb6ff906
Move the user view tests from Puppeteer to Cypress (#8787)
* Move the user view tests from Puppeteer to Cypress

* Iterate snapshot test

* Actually import the new module

* Specify widths

* Update cypress & percy

* Try fix percy

* Finish cypress upgrade

* Tidy cypress.config.ts

* Revert "Tidy cypress.config.ts"

This reverts commit d913052cc4e12f836b99645bda81bbcf21d5f3c8.

* Revert "Finish cypress upgrade"

This reverts commit b5aba3b8a32edbc36549fbd8a27eb0de0390da2a.

* Revert "Update cypress & percy"

This reverts commit f846a364f81b23b173d9af67230aa074bd248cf6.

* delint

* Update percy
2022-06-08 22:12:56 +01:00
Michael Telatynski
9c44e6c1de
Cypress: only pass -u arg to docker on *nix systems (#8773) 2022-06-07 08:11:25 +00:00
Faye Duxovni
2f7f36ac85
Ensure the first device on a newly-registered account gets cross-signed properly (#8750) 2022-06-03 08:57:52 -04:00
Faye Duxovni
23cc1aff73
Fix flakiness of cypress crypto tests (#8731) 2022-06-01 09:57:53 +01:00
Michael Telatynski
af6ded3b0b
Move update tests to Cypress (#8716)
* Move update tests to Cypress

* Fix /version intercept to account for cachebuster
2022-05-30 13:40:55 +00:00
Faye Duxovni
5b520e84c4
Start adding Cypress tests for crypto (#8577)
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-05-30 09:26:48 -04:00
Michael Telatynski
655bca63e6
Move Enterprise Erin tests from Puppeteer to Cypress (#8569)
* Move Enterprise Erin tests from Puppeteer to Cypress

* delint

* types

* Fix double space

* Better handle logout in Lifecycle

* Fix test by awaiting the network request

* Improve some logout handlings

* Try try try again

* Delint

* Fix tests

* Delint
2022-05-26 10:12:49 +00:00
Michael Telatynski
f3f14afbbf
Move spaces tests from Puppeteer to Cypress (#8645)
* Move spaces tests from Puppeteer to Cypress

* Add missing fixture

* Tweak synapsedocker to not double error on a docker failure

* Fix space hierarchy loading race condition

Fixes https://github.com/matrix-org/element-web-rageshakes/issues/10345

* Fix race condition when creating public space with url update code

* Try Electron once more due to perms issues around clipboard

* Try set browser permissions properly

* Try to enable clipboard another way

* Try electron again

* Try electron again again

* Switch to built-in cypress feature for file uploads

* Mock clipboard instead

* TMPDIR ftw?

* uid:gid pls

* Clipboard tests can now run on any browser due to mocking

* Test Enter as well as button for space creation

* Make the test actually work

* Update cypress/support/util.ts

Co-authored-by: Eric Eastwood <erice@element.io>

Co-authored-by: Eric Eastwood <erice@element.io>
2022-05-26 10:19:00 +01:00
Michael Telatynski
d9b7e0721c
Add visual tests using Percy in Cypress (#8610)
* Add basic Percy tests

* Run Percy in CI

* Fix snapshot timing

* Fix bad selector

* Hide another bit of dynamic text

* Add docs
2022-05-17 15:16:14 +00:00
J. Ryan Stinnett
c122c5cd3b
Add basic performance testing via Cypress (#8586) 2022-05-17 15:38:45 +01:00
Michael Telatynski
ad4d3f9a88
Move threads e2e tests over to cypress (#8501)
* Add non-consent (default) Synapse template

* Add consent test

* Add create room test

* Stash work

* Initial threads tests

* fix

* Delete old threads e2e tests, plan new ones

* Fix typed s'more

* Try something else

* specify d.ts

* Fix types once and for all?

* Fix the consent tests

* Iterate threads test harness

* Fix dispatcher types

* Iterate threads test

* fix typing

* Alternative import attempt

* let it break let it break let it break

* Tweak types

* Stash

* delint and update docs

* null-guard scrollIntoView

* Iterate threads test

* Apply suggestions from code review
2022-05-10 17:09:31 +00:00
Michael Telatynski
77a437f30a
Create more cypress tests and utilities (#8494) 2022-05-04 14:11:33 +00:00
Michael Telatynski
c616bd7a62
Attempt to fix the cypress flake (#8492) 2022-05-04 11:07:37 +00:00
David Baker
b8013fc52a
Add a Cypress Test 🌲 (#8295)
* A first, maybe working cypress test

Plus cypress plugins to manage synapses in docker containers

* Fix yaml

* This file is important

* try & find where it's put the artifact

* Download artifact to a directory

* pics or it didn't happen

* Add conditional, otherwise no artifacts on failure...

* Try increasing timeout

also actually give the test a name

* Try in chrome

* Get docker logs to see why it's failing

also document the chrome setting

* Try changing mode on homeserver.yaml

* debug

* More debugging

* more file permissions debugging

* ARGH

* more debug

* sigh

* Eugh, that's not how arguments work

* Add the option to really allow open registration

and remove debug logging / comment fixes

* failure to yaml

* Upload docker logs as artifacts

and temporarily remove contional to test

* Put the conditional back

* Upgrade types in end to end tests

to be compatible with fs-extra types

* Try reducing timeout a bit

also make password more... sensible

* Hex is not octal

* Remove file mode

Seems to be unnecessary since the signing key is perfectly fine

* Give the log files extensions

* Rename workflow file now it also does tests

* Add cypress scripts

* copyright headers

* Use ? operator

Co-authored-by: Travis Ralston <travisr@matrix.org>

* Use develop synapse image

* Tidy up any remaining synapses after each spec run

Also:
 * Move the synapseStart / synapseStop functions out to the top level
   so they can be reused
 * Add a tsconfig file
 * Give the containers names

* Don't upload video on test pass

We don't upload it anyway so tell cypress not to so it can not
bother encoding them

* Enable linting on cypress files

and fix existing lint errors

* Type check cypress files

and make it pass the type checks, specifically:
 * Upgrade sinon fake timers to a version that has the right types
 * Set module resolution
 * Type check cypress files separately

* Rename workflow file again

Probably better to just call it an element web build

* Don't plus + characters in container name

* Fix yaml

* Stream logs to file

* Add note to end to end tester to sya what's been ported

* Put docker rm in finally block

Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-04-14 10:41:58 +01:00