The support for pgpmime was only checked initially after the login. If a
user e.g. authorizes a domain in Mailvelope only after a login,
Mailvelope now instantly works, instead of (silently and undocumentedly)
requireing a logout+login-cycle.
* More ignore-patterns in eslint config
So we don't have to specify them on the command line when we check
codestyle locally.
* Test setup for local and CI using containers
It uses standalone containers for the greenmail IMAP server and the
standalone browser.
A testrunner image is built in the CI (for `linux/amd64` only, because
Github doesn't support multi-platform building on their default
runners and we don't have our own.)
This setup helps to run the tests (reproduceably) also locally.
Previously, on my machine, they produced varying results.
It also reduces the dependencies for running the browser test.
Local execution only depends on `docker compose`, no other tools
(previously it required `sudo`, `java`, and some more.)
The previous solution should still work, if you want it.
The scripts are stored in a directory called `.ci` to hide them a little
and avoid confusion with the container images from the
`roundcubemail-docker` repo.
* Fix UI tests by waiting for element before using it
This only was a flaky problem only occurring sometimes.
* Force a new IMAP connection in plugin tests, too
In other code the initial connection is forced. Doing this here, too,
fixes occasional problems with lost imap connections.
* Make waiting for zipfile's content more robust
* CI: Run tests from script on Windows, too
* CI: Do start local chrome if no connect URL is given
* Move compose.yml to tests/
This way it's less easy mistaken as usable for running Roundcubemail in
production.
* Move compose.yml to .ci/
* Filter "real" attachments by being referenced
This changes the way in which attachments are determined to be shown as
such ("standalone"), or not ("inline").
In theory this should be determined by their Content-Disposition, but in
reality this often doesn't work.
Now we check if the Content-ID or Content-Location of the attachment is
actually being used in other parts of the message. If not, the
attachment is considered to be "standalone".
* Consider all mime-parts to check if message is empty
Previously only `parts` and `body` were checked, so mime-parts that were
classified into `attachments` and `inline_parts` didn't count – thus
messages that contained only those parts were shown blank.
This facilitates using Mailvelope (properly, i.e. with API-access) a
lot, because people don't have to manually add their domain into
Mailvelope's options but just click a button.
* Make dependabot check dependencies for NPM and composer
* Install JS dev requirements through package.json
This way we can have them automatically checked for newer versions.
* Add JS prod dependencies to packages.json for version tracking
They are added as optional dependencies, so we can skip their
installation with `--omit=optional` (as used in the Makefile), but we
can still have them checked for version updates automatically.
The package "publickey" is missing, because it's not available on
npmjs.com, but it hasn't seen updates in years anyway. We probably
should set up a different automatic check for updates nonetheless.
* Remove npm-related files when preparing packaging
If editing a draft, that has a lot of text content already, previously
sometimes a double scrollbar was shown, because the callback function
that calculates the height for the textare was triggered too early.
This change sets the first height calculation behind a 100ms timeout.
(A 0ms timeout might be feasible, too, just to put the callback
execution on the call stack – it also works locally, but I'm not sure
about real world behaviour, so better be safe than sorry.)