[15 minute fix] Added custom Cypress command to create an article. (#13151)
This commit is contained in:
parent
d47f4ffab0
commit
d85d327c1d
2 changed files with 92 additions and 0 deletions
|
|
@ -140,3 +140,59 @@ Cypress.Commands.add(
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an article.
|
||||||
|
*
|
||||||
|
* @param {string} title The title of an article.
|
||||||
|
* @param {Array<string>} [tags=[]] The tags of an article.
|
||||||
|
* @param {string} [content=''] The content of the article.
|
||||||
|
* @param {boolean} [published=true] Whether or not an article should be published.
|
||||||
|
* @param {string} [description=''] The description of the article.
|
||||||
|
* @param {string} [canonicalUrl=''] The canonical URL for the article.
|
||||||
|
* @param {string} [series=''] The series the article is associated with.
|
||||||
|
* @param {string} [allSeries=[]] The list of available series the article can be a part of.
|
||||||
|
* @param {string} [organizations=[]] The list of organizations the author of the article belongs to.
|
||||||
|
* @param {string} [organizationId=null] The selected organization's ID to create the article under.
|
||||||
|
* @param {'v1'|'v2'} [editorVersion='v2'] The editor version.
|
||||||
|
*
|
||||||
|
* @returns {Cypress.Chainable<Cypress.Response>} A cypress request for creating an article.
|
||||||
|
*/
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'createArticle',
|
||||||
|
({
|
||||||
|
title,
|
||||||
|
tags = [],
|
||||||
|
content = '',
|
||||||
|
published = true,
|
||||||
|
description = '',
|
||||||
|
canonicalUrl = '',
|
||||||
|
series = '',
|
||||||
|
allSeries = [],
|
||||||
|
organizations = [],
|
||||||
|
organizationId = null,
|
||||||
|
editorVersion = 'v2',
|
||||||
|
}) => {
|
||||||
|
return cy.request('POST', '/articles', {
|
||||||
|
article: {
|
||||||
|
id: null,
|
||||||
|
title,
|
||||||
|
tagList: tags.join(','),
|
||||||
|
description,
|
||||||
|
canonicalUrl,
|
||||||
|
series,
|
||||||
|
allSeries,
|
||||||
|
bodyMarkdown: content,
|
||||||
|
published,
|
||||||
|
submitting: false,
|
||||||
|
editing: false,
|
||||||
|
mainImage: null,
|
||||||
|
organizations,
|
||||||
|
organizationId,
|
||||||
|
edited: true,
|
||||||
|
updatedAt: null,
|
||||||
|
version: editorVersion,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,42 @@ Pro as there were issues integrating the cypress-rails gem with the
|
||||||
[knapsack-pro-cypress](https://github.com/KnapsackPro/knapsack-pro-cypress) npm
|
[knapsack-pro-cypress](https://github.com/KnapsackPro/knapsack-pro-cypress) npm
|
||||||
package.
|
package.
|
||||||
|
|
||||||
|
## Cypress Custom commands
|
||||||
|
|
||||||
|
[Cypress custom commands](https://docs.cypress.io/api/cypress-api/custom-commands.html)
|
||||||
|
allow you to extend the functionality of the E2E testing framework. In the case
|
||||||
|
of Forem, we need custom commands to create an article, for example.
|
||||||
|
|
||||||
|
A custom command is prefixed like any Cypress command by `cy.` All custom
|
||||||
|
commands can be found in the
|
||||||
|
[commands.js](https://github.com/forem/forem/blob/master/cypress/support/commands.js) file.
|
||||||
|
|
||||||
|
### Creating a Custom Article Command
|
||||||
|
|
||||||
|
To create an article as part of your test's setup, use the `cy.createArticle`
|
||||||
|
custom command. It can be called like so:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
cy.createArticle({
|
||||||
|
title: 'Test Article',
|
||||||
|
tags: ['beginner', 'discuss'], // tags are optional
|
||||||
|
content: 'This is a test article',
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to do something with the article creation's response, you can call
|
||||||
|
it like so.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
cy.createArticle({
|
||||||
|
title: 'Test Article',
|
||||||
|
tags: ['beginner', 'discuss'], // tags are optional
|
||||||
|
content: 'This is a test article',
|
||||||
|
}).then((response) => {
|
||||||
|
cy.visit(response.body.current_state_path); // path to article
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## Additional Resources
|
## Additional Resources
|
||||||
|
|
||||||
- [Cypress documentation](https://docs.cypress.io)
|
- [Cypress documentation](https://docs.cypress.io)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue