Feat: editorial workflow bitbucket gitlab (#3014)
* refactor: typescript the backends * feat: support multiple files upload for GitLab and BitBucket * fix: load entry media files from media folder or UI state * chore: cleanup log message * chore: code cleanup * refactor: typescript the test backend * refactor: cleanup getEntry unsued variables * refactor: moved shared backend code to lib util * chore: rename files to preserve history * fix: bind readFile method to API classes * test(e2e): switch to chrome in cypress tests * refactor: extract common api methods * refactor: remove most of immutable js usage from backends * feat(backend-gitlab): initial editorial workflow support * feat(backend-gitlab): implement missing workflow methods * chore: fix lint error * feat(backend-gitlab): support files deletion * test(e2e): add gitlab cypress tests * feat(backend-bitbucket): implement missing editorial workflow methods * test(e2e): add BitBucket backend e2e tests * build: update node version to 12 on netlify builds * fix(backend-bitbucket): extract BitBucket avatar url * test: fix git-gateway AuthenticationPage test * test(e2e): fix some backend tests * test(e2e): fix tests * test(e2e): add git-gateway editorial workflow test * chore: code cleanup * test(e2e): revert back to electron * test(e2e): add non editorial workflow tests * fix(git-gateway-gitlab): don't call unpublishedEntry in simple workflow gitlab git-gateway doesn't support editorial workflow APIs yet. This change makes sure not to call them in simple workflow * refactor(backend-bitbucket): switch to diffstat API instead of raw diff * chore: fix test * test(e2e): add more git-gateway tests * fix: post rebase typescript fixes * test(e2e): fix tests * fix: fix parsing of content key and add tests * refactor: rename test file * test(unit): add getStatues unit tests * chore: update cypress * docs: update beta docs
This commit is contained in:
parent
4ff5bc2ee0
commit
6f221ab3c1
@ -60,6 +60,8 @@ module.exports = {
|
||||
},
|
||||
rules: {
|
||||
'require-atomic-updates': [0],
|
||||
'import/no-unresolved': [0],
|
||||
'@typescript-eslint/no-non-null-assertion': [0],
|
||||
'@typescript-eslint/explicit-function-return-type': 0,
|
||||
'@typescript-eslint/no-use-before-define': [
|
||||
'error',
|
||||
|
@ -10,7 +10,7 @@ During the setup of a spec file, the relevant `index.html` and `config.yml` are
|
||||
|
||||
Tests for the `test` backend use mock data generated in `dev-test/backends/test/index.html`.
|
||||
|
||||
Tests for the `github` backend use previously [recorded data](fixtures) and stub `fetch` [calls](support/commands.js#L82). See more about recording tests data [here](#recording-tests-data).
|
||||
Tests for the other backends use previously [recorded data](fixtures) and stub `fetch` [calls](support/commands.js#L52). See more about recording tests data [here](#recording-tests-data).
|
||||
|
||||
## Run Tests Locally
|
||||
|
||||
@ -27,9 +27,7 @@ yarn test:e2e:exec # runs Cypress in non-headless mode with mock data
|
||||
|
||||
## Recording Tests Data
|
||||
|
||||
> Currently only relevant for `github` backend tests.
|
||||
|
||||
When recording tests, access to the GitHub API is required, thus one must set up a `.env` file in the root project directory in the following format:
|
||||
When recording tests, access to the relevant backend API is required, thus one must set up a `.env` file in the root project directory in the following format:
|
||||
|
||||
```bash
|
||||
GITHUB_REPO_OWNER=owner
|
||||
@ -37,9 +35,21 @@ GITHUB_REPO_NAME=repo
|
||||
GITHUB_REPO_TOKEN=tokenWithWritePermissions
|
||||
GITHUB_OPEN_AUTHORING_OWNER=forkOwner
|
||||
GITHUB_OPEN_AUTHORING_TOKEN=tokenWithWritePermissions
|
||||
|
||||
GITLAB_REPO_OWNER=owner
|
||||
GITLAB_REPO_NAME=repo
|
||||
GITLAB_REPO_TOKEN=tokenWithWritePermissions
|
||||
|
||||
BITBUCKET_REPO_OWNER=owner
|
||||
BITBUCKET_REPO_NAME=repo
|
||||
BITBUCKET_OUATH_CONSUMER_KEY=ouathConsumerKey
|
||||
BITBUCKET_OUATH_CONSUMER_SECRET=ouathConsumerSecret
|
||||
|
||||
NETLIFY_API_TOKEN=netlifyApiToken
|
||||
NETLIFY_INSTALLATION_ID=netlifyGitHubInstallationId
|
||||
```
|
||||
|
||||
> The structure of the repo designated by `GITHUB_REPO_OWNER/GITHUB_REPO_NAME` should match the settings in [`config.yml`](../dev-test/backends/github/config.yml#L1)
|
||||
> The structure of the relevant repo should match the settings in [`config.yml`](../dev-test/backends/<backend>/config.yml#L1)
|
||||
|
||||
To start a recording run the following commands:
|
||||
|
||||
@ -50,9 +60,9 @@ yarn test:e2e:record-fixtures:dev # runs Cypress in non-headless and pass data t
|
||||
yarn mock:server:stop # stops the recording proxy
|
||||
```
|
||||
|
||||
> During the recorded process a clone of `GITHUB_REPO_NAME` will be created under `.temp` and reset between tests.
|
||||
> During the recorded process a clone of the relevant repo will be created under `.temp` and reset between tests.
|
||||
|
||||
Recordings are sanitized from any possible sensitive data and [transformed](plugins/github.js#L395) into an easier to process format.
|
||||
Recordings are sanitized from any possible sensitive data and [transformed](plugins/common.js#L34) into an easier to process format.
|
||||
|
||||
To avoid recording all the tests over and over again, a recommended process is to:
|
||||
|
||||
@ -65,8 +75,8 @@ To avoid recording all the tests over and over again, a recommended process is t
|
||||
|
||||
Most common failures are:
|
||||
|
||||
1. The [recorded data](utils/mock-server.js#L17) is not [transformed](plugins/github.js#L395) properly (e.g. [sanitization](plugins/github.js#L283) broke something).
|
||||
2. The [stubbed requests and responses](support/commands.js#L82) are not [matched](support/commands.js#L29) properly (e.g. timestamp changes in request body between recording and playback).
|
||||
1. The [recorded data](utils/mock-server.js#L17) is not [transformed](plugins/common.js#L34) properly (e.g. sanitization broke something).
|
||||
2. The [stubbed requests and responses](support/commands.js#L82) are not [matched](support/commands.js#L32) properly (e.g. timestamp changes in request body between recording and playback).
|
||||
|
||||
Dumping all recorded data as is to a file [here](utils/mock-server.js#L24) and adding a `debugger;` statement [here](support/commands.js#L52) is useful to gain insights.
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user