docs: add cypress test

This commit is contained in:
MapleLeaf
2022-01-10 15:06:55 -06:00
parent 4f463bfa23
commit 87cbf1b74d
13 changed files with 758 additions and 3 deletions

View File

@@ -1,5 +1,8 @@
FROM node:lts-slim FROM node:lts-slim
ENV NODE_ENV=production
ENV CYPRESS_INSTALL_BINARY=0
WORKDIR /app WORKDIR /app
COPY / ./ COPY / ./
@@ -9,5 +12,4 @@ RUN npm install -g pnpm
RUN pnpm install --unsafe-perm --frozen-lockfile RUN pnpm install --unsafe-perm --frozen-lockfile
RUN pnpm run build -C packages/docs RUN pnpm run build -C packages/docs
ENV NODE_ENV=production
CMD [ "pnpm", "-C", "packages/docs", "start" ] CMD [ "pnpm", "-C", "packages/docs", "start" ]

View File

@@ -16,11 +16,12 @@ export function MainNavigation() {
<AppLink {...link} key={link.to} className={linkClass} /> <AppLink {...link} key={link.to} className={linkClass} />
))} ))}
</div> </div>
<div className="md:hidden" id="main-navigation-popover"> <div className="md:hidden">
<PopoverMenu> <PopoverMenu>
{mainLinks.map((link) => ( {mainLinks.map((link) => (
<AppLink <AppLink
{...link} {...link}
role="menuitem"
key={link.to} key={link.to}
className={PopoverMenu.itemClass} className={PopoverMenu.itemClass}
/> />
@@ -29,6 +30,7 @@ export function MainNavigation() {
{guideLinks.map(({ link }) => ( {guideLinks.map(({ link }) => (
<AppLink <AppLink
{...link} {...link}
role="menuitem"
key={link.to} key={link.to}
className={PopoverMenu.itemClass} className={PopoverMenu.itemClass}
/> />

View File

@@ -10,6 +10,7 @@ export function PopoverMenu({ children }: { children: React.ReactNode }) {
<MenuAlt4Icon className="w-6" /> <MenuAlt4Icon className="w-6" />
</button> </button>
<div <div
role="menu"
className={` className={`
w-48 max-h-[calc(100vh-4rem)] w-48 max-h-[calc(100vh-4rem)]
absolute right-0 top-[calc(100%+8px)] absolute right-0 top-[calc(100%+8px)]

View File

@@ -0,0 +1,3 @@
{
"baseUrl": "http://localhost:3000/"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
}

View File

@@ -0,0 +1,10 @@
describe("main popover menu", () => {
it("should toggle on button click", () => {
cy.viewport(480, 720)
cy.visit("/")
cy.findByRole("button", { name: "Menu" }).click()
cy.findByRole("menu").should("be.visible")
cy.findByRole("button", { name: "Menu" }).click()
cy.findByRole("menu").should("not.exist")
})
})

View File

@@ -0,0 +1,22 @@
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
// eslint-disable-next-line no-unused-vars
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}

View File

@@ -0,0 +1,26 @@
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
import "@testing-library/cypress/add-commands"

View File

@@ -0,0 +1,20 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands'
// Alternatively you can use CommonJS syntax:
// require('./commands')

View File

@@ -0,0 +1,6 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"types": ["cypress", "@testing-library/cypress"]
}
}

View File

@@ -4,6 +4,8 @@
"scripts": { "scripts": {
"prepare": "remix setup node", "prepare": "remix setup node",
"dev": "concurrently 'typedoc --watch' 'remix dev'", "dev": "concurrently 'typedoc --watch' 'remix dev'",
"test": "pnpm build && pnpm start & wait-on http-get://localhost:3000 && cypress run",
"test-dev": "pnpm dev & wait-on http-get://localhost:3000 && cypress open",
"build": "typedoc && remix build", "build": "typedoc && remix build",
"start": "remix-serve build", "start": "remix-serve build",
"typecheck": "tsc --noEmit" "typecheck": "tsc --noEmit"
@@ -28,14 +30,17 @@
"devDependencies": { "devDependencies": {
"@remix-run/dev": "^1.1.1", "@remix-run/dev": "^1.1.1",
"@remix-run/node": "^1.1.1", "@remix-run/node": "^1.1.1",
"@testing-library/cypress": "^8.0.2",
"@types/node": "*", "@types/node": "*",
"@types/react": "^17.0.38", "@types/react": "^17.0.38",
"@types/react-dom": "^17.0.11", "@types/react-dom": "^17.0.11",
"@types/tailwindcss": "^3.0.2", "@types/tailwindcss": "^3.0.2",
"concurrently": "^7.0.0", "concurrently": "^7.0.0",
"cypress": "^9.2.0",
"rehype-prism-plus": "^1.2.2", "rehype-prism-plus": "^1.2.2",
"typedoc": "^0.22.10", "typedoc": "^0.22.10",
"typescript": "^4.5.4" "typescript": "^4.5.4",
"wait-on": "^6.0.0"
}, },
"engines": { "engines": {
"node": ">=14" "node": ">=14"

653
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff