dapr / dapr/cli

[Proposal] Update E2E tests to build and use dapr/dapr from source code

Open
#904 8 comments 2 reactions 0 assignees View on GitHub
area/release-engineering area/test/e2e P2 pinned triaged/unresolved
Dominant language
Go
Stars
353
Forks
221
Avg merge
3d 8h
Merged PRs (30d)
2

Description

## Describe the proposal
The Dapr CLI E2E tests are intended to tests the execution of dapr CLI commands and their effects.
For example `dapr init` installs a particular version of `dapr` and that is what the E2E tests verify.

An interesting scenario that is also there is when a new flag is added to `daprd`, that needs to be added to the CLI `dapr run` also.

In this case the E2E tests for `dapr run` will fail since it uses a `daprd` binary which is the previously released stable version of Dapr. In that case `dapr run` tries to pass the flag onto to `daprd` in the E2E test and it fails with the error `flag provided but not defined`

Example: `flag provided but not defined: -api-log-level`

See [error](https://github.com/dapr/cli/runs/5384449497?check_suite_focus=true#step:7:231)

But for testing `dapr init` flow, we still need to test only if the stable version of `daprd` and `dashboard` are downloaded and installed.

But for the command like `dapr run`, argument can be made that it needs to be tested with the latest built code from dapr/dapr master. Similar arguments can be made for `dapr dashboard` and such. Otherwise contributors would have to wait for the stable release of the enhancement made in `dapr/dapr` to be in stable release phase for it to be echoed in CLI. This is with respect to only commands and arguments that are proxied over to `daprd` or `dashboard`.

A solution would be to have the current E2E tests for `dapr init` as such and once that is done for any further commands, get the source code for dapr/dapr and build and use the binary from that. (Similar to how a DAPR_REF is specified for [Java_SDK](https://github.com/dapr/java-sdk/blob/master/.github/workflows/build.yml#L72-L78) as an override to build and use the specified commit). In the CLI E2E tests, we would need to have the binary built. Complete `dapr init` test and verify; once that is done replace the installed `daprd` binary within `~/.dapr/bin` with the built from source edge binary and run the tests for the other commands on that. This is for the self hosted scenarios.

@yaron2 @artursouza Any thoughts on this?

## Release Note

RELEASE NOTE:

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.