instrumentisto / medea

[Closed] Medea media server
Mozilla Public License 2.0
23 stars 3 forks source link

Add Medea E2E test runner #178

Closed evdokimovs closed 3 years ago

evdokimovs commented 3 years ago

Synopsis

This PR adds runner for the Cucumber E2E tests.

Also in this PR was added simple test scenarios for Room joining.

Solution

Checklist

evdokimovs commented 3 years ago

FCM

Add Medea E2E tests runner (#178)

- rename old E2E tests as integration tests
- implement Cucumber tests runner for new E2E tests
- make 'medea-control-api-mock' protocol structures public
- impl E2E test scenarios for Member joining
- upd CI pipeline to run new E2E tests in Chrome and Firefox
tyranron commented 3 years ago

@evdokimovs why we use e2e/src/ instead of tests/e2e/?

evdokimovs commented 3 years ago

@tyranron ,

@evdokimovs why we use e2e/src/ instead of tests/e2e/?

На мой взгляд, если положить эти тесты в /tests/e2e, то будет создаваться ощущение, что тесты относятся к крейту medea, а не к связке medea + medea-jason, поэтому я решил выделить их в отдельный крейт.

evdokimovs commented 3 years ago

@tyranron ,

Я вспомнил еще одну проблему держания тестов в /tests/e2e. У нас достаточно много зависимостей у интеграционных и E2E тестов, при этом они практически не пересекаются. Раскидать по разным feature dev зависимости нельзя, и поэтому нам придется для интеграционных тестов компиллить зависимости, которые нужны только для E2E тестов, а для E2E тестов, соответственно, наоборот.

Плюс нам придется использовать две версии tokio для тестов. E2E тестам нужна версия v1.1, а интеграционным v0.2, из-за этого может возникнуть путаница, когда в E2E тестах кто-нибудь по привычке начнет писать tokio::foo::bar и попадет на версию v0.2 вместо v1.1.

Подход с ракидыванием тестов по разным крейтам, впринципе, применяется. Как пример, крейт ndarray у которого тесты раскиданы по крейтам (blas-tests, numeric-tests, serialization-tests).

cc @alexlapa

UPD: Поправил опечатку с версиями tokio.

alexlapa commented 3 years ago

@tyranron , @evdokimovs ,

Я значимых проблем в текущем project layout'е не вижу. У нас тут и так мультипрджект репа, так что небольшие отклонения от привычного лэйаута понятны и позволительны.

Плюс нам придется использовать две версии tokio для тестов.

Несколько преувеличиваете проблемность этого варианта. Сразу в Cargo.toml обзываете их как tokio_1 и tokio_02, и все это дело можно вполне грамотно организовать. Ну это, конечно, если принципиально чтобы все лежало в /tests. На созвоне обсудим - быстрее будет.

E2E тестам нужна версия v0.2, а интеграционным v1.1

*Наоборот.