From 05612eb230fd3f97415d9f728ffa94b5f03a4272 Mon Sep 17 00:00:00 2001 From: Andreas Grub Date: Fri, 18 Jun 2021 11:41:04 +0200 Subject: [PATCH] feat(ux): add cypress tests for displaying an upload button --- .../features/request-body-upload-file.yaml | 105 ++++++++++++++++ .../features/request-body-upload-file.js | 114 ++++++++++++++++++ 2 files changed, 219 insertions(+) create mode 100644 test/e2e-cypress/static/documents/features/request-body-upload-file.yaml create mode 100644 test/e2e-cypress/tests/features/request-body-upload-file.js diff --git a/test/e2e-cypress/static/documents/features/request-body-upload-file.yaml b/test/e2e-cypress/static/documents/features/request-body-upload-file.yaml new file mode 100644 index 000000000000..ec5d27771a43 --- /dev/null +++ b/test/e2e-cypress/static/documents/features/request-body-upload-file.yaml @@ -0,0 +1,105 @@ +openapi: 3.0.0 +info: + title: "Request body file upload" + description: |- + This document has examples for examining the `schema` or content type for request bodies requiring a file upload + * `application/octect-stream` content type (no matter what schema format) + * `audio/*` content type (no matter what schema format) + * `image/*` content type (no matter what schema format) + * `video/*` content type (no matter what schema format) + * schema format is `base64` (no matter what content type) + * schema format is `binary` (no matter what content type) + version: "1.0.0" +paths: + /upload-application-octet-stream: + post: + operationId: uploadApplicationOctetStream + requestBody: + content: + application/octet-stream: + schema: + type: string + responses: + '200': + description: successful operation + content: + text/plain: + schema: + type: string + /upload-image-png: + post: + operationId: uploadImagePng + requestBody: + content: + image/png: + schema: + type: string + responses: + '200': + description: successful operation + content: + text/plain: + schema: + type: string + /upload-audio-wav: + post: + operationId: uploadAudioWav + requestBody: + content: + audio/wav: + schema: + type: string + responses: + '200': + description: successful operation + content: + text/plain: + schema: + type: string + /upload-video-mpeg: + post: + operationId: uploadVideoMpeg + requestBody: + content: + video/mpeg: + schema: + type: string + responses: + '200': + description: successful operation + content: + text/plain: + schema: + type: string + /upload-schema-format-binary: + post: + operationId: uploadSchemaFormatBinary + requestBody: + content: + application/x-custom: + schema: + type: string + format: binary + responses: + '200': + description: successful operation + content: + text/plain: + schema: + type: string + /upload-schema-format-base64: + post: + operationId: uploadSchemaFormatBase64 + requestBody: + content: + application/x-custom: + schema: + type: string + format: base64 + responses: + '200': + description: successful operation + content: + text/plain: + schema: + type: string diff --git a/test/e2e-cypress/tests/features/request-body-upload-file.js b/test/e2e-cypress/tests/features/request-body-upload-file.js new file mode 100644 index 000000000000..09b156515314 --- /dev/null +++ b/test/e2e-cypress/tests/features/request-body-upload-file.js @@ -0,0 +1,114 @@ +/** + * @prettier + */ + +describe("OpenAPI 3.0 Request Body upload file button", () => { + describe("application/octet-stream", () => { + it("should display description with the correct content type", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadApplicationOctetStream") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper i") + .should("have.text", "Example values are not available for application/octet-stream media types.") + }) + it("should display a file upload button", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadApplicationOctetStream") + .click() + .get(".try-out__btn") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper input") + .should("have.prop", "type", "file") + }) + }) + describe("image/png", () => { + it("should display description with the correct content type", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadImagePng") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper i") + .should("have.text", "Example values are not available for image/png media types.") + }) + it("should display a file upload button", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadApplicationOctetStream") + .click() + .get(".try-out__btn") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper input") + .should("have.prop", "type", "file") + }) + }) + describe("audio/wav", () => { + it("should display description with the correct content type", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadAudioWav") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper i") + .should("have.text", "Example values are not available for audio/wav media types.") + }) + it("should display a file upload button", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadApplicationOctetStream") + .click() + .get(".try-out__btn") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper input") + .should("have.prop", "type", "file") + }) + }) + describe("video/mpeg", () => { + it("should display description with the correct content type", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadVideoMpeg") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper i") + .should("have.text", "Example values are not available for video/mpeg media types.") + }) + it("should display a file upload button", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadApplicationOctetStream") + .click() + .get(".try-out__btn") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper input") + .should("have.prop", "type", "file") + }) + }) + describe("schema format binary", () => { + it("should display description with the correct content type", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadSchemaFormatBinary") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper i") + .should("have.text", "Example values are not available for application/x-custom media types.") + }) + it("should display a file upload button", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadSchemaFormatBinary") + .click() + .get(".try-out__btn") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper input") + .should("have.prop", "type", "file") + }) + }) + describe("schema format base64", () => { + it("should display description with the correct content type", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadSchemaFormatBase64") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper i") + .should("have.text", "Example values are not available for application/x-custom media types.") + }) + it("should display a file upload button", () => { + cy.visit("/?url=/documents/features/request-body-upload-file.yaml") + .get("#operations-default-uploadSchemaFormatBinary") + .click() + .get(".try-out__btn") + .click() + .get(".opblock-section-request-body .opblock-description-wrapper input") + .should("have.prop", "type", "file") + }) + }) +})