Project Structure - spryker-projects/cypress-boilerplate GitHub Wiki

cypress-boilerplate/
├── .envs
│   ├── .env.ci
│   ├── .env.local
│   ├── .env.production
│   ├── .env.staging
│   └── .env.testing
├── .github
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows
│       ├── ci.yml
│       └── regression.yml
├── cypress
│   ├── data
│   │   ├── reports
│   │   │   └── index.html
│   │   └── screenshots
│   ├── e2e
│   │   ├── backoffice
│   │   │   └── orders
│   │   │       ├── backoffice-process-order-scenario.cy.ts
│   │   │       └── backoffice-process-order.cy.ts
│   │   ├── glue
│   │   │   ├── access-tokens
│   │   │   │   └── glue-access-token.cy.ts
│   │   │   └── checkout
│   │   │       └── glue-checkout.cy.ts
│   │   ├── merchant-portal
│   │   │   └── orders
│   │   │       └── merchant-portal-process-merchant-order.cy.ts
│   │   └── storefront
│   │       ├── checkout
│   │       │   └── storefront-checkout.cy.ts
│   │       └── quick-order
│   │           └── storefront-quick-order.cy.ts
│   ├── fixtures
│   │   ├── checkout-data.json
│   │   ├── customer-data.json
│   │   ├── product-data.json
│   │   ├── quick-order-data.json
│   │   └── user-data.json
│   └── support
│       ├── api-helper
│       │   ├── api-helper.ts
│       │   └── general-responses
│       │       └── error-response.ts
│       ├── cy-commands
│       │   ├── backoffice
│       │   │   └── oms-transition-commands.ts
│       │   ├── glue
│       │   │   ├── addresses-commands.ts
│       │   │   ├── carts-commands.ts
│       │   │   └── checkout-commands.ts
│       │   └── storefront
│       │       ├── cart-commands.ts
│       │       └── utility-commands.ts
│       ├── e2e.ts
│       ├── glue-endpoints
│       │   ├── authentication
│       │   │   ├── access-tokens-response.ts
│       │   │   └── access-tokens.ts
│       │   ├── cart
│       │   │   ├── carts-items.ts
│       │   │   └── carts.ts
│       │   ├── checkout
│       │   │   └── checkout.ts
│       │   └── glue-request.ts
│       ├── index.d.ts
│       ├── page-objects
│       │   ├── abstract-page.ts
│       │   ├── backoffice
│       │   │   ├── login
│       │   │   │   └── backoffice-login-page.ts
│       │   │   └── order-management
│       │   │       ├── backoffice-order-details-page.ts
│       │   │       └── backoffice-order-list-page.ts
│       │   ├── merchant-portal
│       │   │   ├── login
│       │   │   │   └── merchant-portal-login-page.ts
│       │   │   └── order-management
│       │   │       ├── merchant-portal-order-details-page.ts
│       │   │       └── merchant-portal-order-list-page.ts
│       │   └── storefront
│       │       ├── cart
│       │       │   ├── storefront-cart-flyout.ts
│       │       │   ├── storefront-cart-page.ts
│       │       │   └── storefront-create-cart-page.ts
│       │       ├── checkout
│       │       │   ├── storefront-checkout-address-page.ts
│       │       │   ├── storefront-checkout-payment-page.ts
│       │       │   ├── storefront-checkout-shipping-page.ts
│       │       │   ├── storefront-checkout-success-page.ts
│       │       │   └── storefront-checkout-summary-page.ts
│       │       ├── login
│       │       │   └── storefront-login-page.ts
│       │       ├── product
│       │       │   └── storefront-product-details-page.ts
│       │       ├── quick-order
│       │       │   └── storefront-quick-order-page.ts
│       │       └── search
│       │           ├── storefront-search-page.ts
│       │           ├── storefront-search-results-page.ts
│       │           └── storefront-search-suggestions-flyout.ts
│       └── scenarios
│           ├── backoffice
│           │   └── oms-transition-scenarios.ts
│           ├── glue
│           │   ├── glue-addresses-scenarios.ts
│           │   ├── glue-carts-scenarios.ts
│           │   └── glue-checkout-scenarios.ts
│           └── storefront
│               ├── storefront-cart-scenarios.ts
│               └── storefront-quick-order-scenarios.ts
├── .env.dist
├── .eslintignore
├── .eslintrc
├── .gitignore
├── .prettierignore
├── .prettierrc.json
├── composer.json
├── cypress.config.ts
├── Dockerfile
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json

Directory and File Descriptions

Root Directory

Contains the main configuration files and project information.

  • .env.dist: Example environment variables file.
  • .eslintignore: ESLint ignore file.
  • .eslintrc: ESLint configuration file.
  • .gitignore: Git ignore file.
  • .prettierignore: Prettier ignore file.
  • .prettierrc.json: Prettier configuration file.
  • composer.json: Dependencies for PHP components.
  • cypress.config.ts: Cypress configuration file.
  • Dockerfile: Configuration file for building Docker images.
  • LICENSE: License information.
  • README.md: Project overview and instructions.
  • package.json: Project dependencies and scripts.
  • package-lock.json: Lock file for npm dependencies.
  • tsconfig.json: TypeScript configuration file.

.envs Directory

Contains environment variables for different environments.

  • .env.ci: CI environment variables.
  • .env.local: Local environment variables.
  • .env.production: Production environment variables.
  • .env.staging: Staging environment variables.
  • .env.testing: Testing environment variables.

.github Directory

Contains GitHub-specific files and workflows.

  • PULL_REQUEST_TEMPLATE.md: Pull request template.
  • workflows: GitHub Actions workflows.
    • ci.yml: Continuous integration workflow. Checks Code Quality.
    • regression.yml: Regression testing workflow. Runs E2E tests vs Spryker B2B Demoshop

cypress Directory

Contains Cypress-specific files and directories.

  • e2e: End-to-end test files.
    • backoffice: Test files for back office processes.
      • backoffice-process-order-scenario.cy.ts: Scenario-based test for back office order processing with an example of CLI scenarios.
      • backoffice-process-order.cy.ts: Test for back office order processing with an example of CLI commands.
    • glue: Test files for glue components.
      • glue-access-token.cy.ts: Test for access tokens with API response validation vs schema.
      • glue-checkout.cy.ts: Test for checkout process.
    • merchant-portal: Test files for merchant portal.
      • merchant-portal-process-merchant-order.cy.ts: Test for merchant order processing within Merchant Portal with an example of order item state handling.
    • storefront: Test files for storefront.
      • storefront-checkout.cy.ts: Test for storefront checkout process.

fixtures Directory

Contains test data files.

  • checkout-data.json: Test data for checkout.
  • customer-data.json: Test data for customers.
  • product-data.json: Test data for products.
  • user-data.json: Test data for back office users.

support Directory

Contains support files for Cypress tests.

  • api-helper: Helper files for API interactions.
    • api-helper.ts: API response schema validator, based on Ajv validator
    • general-responses: Common API responses.
      • error-response.ts: Glue rrror response schema.
  • cy-commands: Custom Cypress commands.
    • backoffice: Custom commands for back office.
      • oms-transition-commands.ts: OMS transition commands.
    • glue: Custom commands for glue components.
      • addresses-commands.ts: Addresses commands.
      • carts-commands.ts: Carts commands.
      • checkout-commands.ts: Checkout commands.
    • storefront: Custom commands for storefront.
      • cart-commands.ts: Cart commands.
      • utility-commands.ts: Utility commands.
  • e2e.ts: End-to-end test setup.
  • glue-endpoints: Endpoints for glue components.
    • authentication: Authentication endpoints.
      • access-tokens-response.ts: Access tokens response schema.
      • access-tokens.ts: Access tokens requests.
    • cart: Cart endpoints.
      • carts-items.ts: Carts items endpoint requests.
      • carts.ts: Carts endpoint requests.
    • checkout: Checkout endpoints.
      • checkout.ts: Checkout endpoint requests.
    • glue-request.ts: Abstract class/page object model for Glue endpoint/classes.
  • index.d.ts: TypeScript declaration files.
  • page-objects: Page object models for application sections.
    • abstract-page.ts: Abstract class/page object model for UI pages/classes.
    • backoffice: Page objects for back office.
      • login: Login page objects.
        • backoffice-login-page.ts: Back office login page object.
      • order-management: Order management page objects.
        • backoffice-order-details-page.ts: Back office order details page object.
        • backoffice-order-list-page.ts: Back office order list page object.
    • merchant-portal: Page objects for merchant portal.
      • login: Login page objects.
        • merchant-portal-login-page.ts: Merchant portal login page object.
      • order-management: Order management page objects.
        • merchant-portal-order-details-page.ts: Merchant portal order details page object.
        • merchant-portal-order-list-page.ts: Merchant portal order list page object.
    • storefront: Page objects for storefront.
      • cart: Cart page objects.
        • storefront-cart-flyout.ts: Storefront cart flyout page object.
        • storefront-cart-page.ts: Storefront cart page object.
        • storefront-create-cart-page.ts: Storefront create cart page object.
      • checkout: Checkout page objects.
        • storefront-checkout-address-page.ts: Storefront checkout address page object.
        • storefront-checkout-payment-page.ts: Storefront checkout payment page object.
        • storefront-checkout-shipping-page.ts: Storefront checkout shipping page object.
        • storefront-checkout-success-page.ts: Storefront checkout success page object.
        • storefront-checkout-summary-page.ts: Storefront checkout summary page object.
      • login: Login page objects.
        • storefront-login-page.ts: Storefront login page object.
      • product: Product page objects.
        • storefront-product-details-page.ts: Storefront product details page object.
      • search: Search page objects.
        • storefront-search-page.ts: Storefront search page object.
        • storefront-search-results-page.ts: Storefront search results page object.
        • storefront-search-suggestions-flyout.ts: Storefront search suggestions flyout page object.
  • scenarios: Scenario files for various components.
    • backoffice: Back office scenarios.
      • oms-transition-scenarios.ts: OMS transition scenarios.
    • glue: Glue scenarios.
      • glue-addresses-scenarios.ts: Glue addresses scenarios.
      • glue-carts-scenarios.ts: Glue carts scenarios.
      • glue-checkout-scenarios.ts: Glue checkout scenarios.
    • storefront: Storefront scenarios.
      • storefront-cart-scenarios.ts: Storefront cart scenarios.