Skip to content

Commit

Permalink
Merge pull request #1 from abdullahkabakk/config
Browse files Browse the repository at this point in the history
[feat] Added initial project configs
  • Loading branch information
abdullahkabakk authored Mar 22, 2024
2 parents f432bbd + eabe34c commit 77f0ada
Show file tree
Hide file tree
Showing 10 changed files with 7,987 additions and 2,585 deletions.
153 changes: 153 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: Deploy

on:
pull_request:
types: [opened, synchronize]

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Lint code
run: npm run lint

- name: Format code
run: npm run format

security-scan:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Run npm audit for security vulnerabilities
run: npm audit

unit-test:
runs-on: ubuntu-latest
needs: [lint, security-scan]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Generate code coverage report
run: npm run test:unit:coverage

- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: abdullahkabakk/url-shortener-website

component-test:
runs-on: ubuntu-latest
needs: [lint, security-scan]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Run component tests
run: npm run test:component

e2e-test:
runs-on: ubuntu-latest
needs: [unit-test, component-test]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Cypress run
uses: cypress-io/github-action@v6
with:
build: npm run build
start: npm run preview
wait-on-timeout: 120
wait-on: 'http://localhost:4173'

deploy:
runs-on: ubuntu-latest
needs: [e2e-test]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Build the application
run: npm run build

- name: Archive build artifacts
uses: actions/upload-artifact@v4
with:
name: build
path: dist

- name: Deploy to Netlify
uses: nwtgck/[email protected]
with:
publish-dir: './dist'
production-branch: main
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-message: "Deploy from GitHub Actions"
enable-pull-request-comment: false
enable-commit-comment: true
overwrites-pull-request-comment: true
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 5
4 changes: 2 additions & 2 deletions cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import { defineConfig } from 'cypress'

export default defineConfig({
e2e: {
specPattern: 'cypress/e2e/**/*.{cy,spec}.{js,jsx,ts,tsx}',
specPattern: 'cypress/e2e/**/*.{cy,}.{js,jsx,ts,tsx}',
baseUrl: 'http://localhost:4173'
},
component: {
specPattern: 'src/**/__tests__/*.{cy,spec}.{js,ts,jsx,tsx}',
specPattern: 'src/**/__tests__/*.{cy,}.{js,ts,jsx,tsx}',
devServer: {
framework: 'vue',
bundler: 'vite'
Expand Down
35 changes: 35 additions & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import type { Config } from '@jest/types';

// Jest configuration options
const config: Config.InitialOptions = {
// Clear mock calls between every test
clearMocks: true,

// Enable collecting code coverage information
collectCoverage: true,

// Directory where coverage information will be stored
coverageDirectory: 'coverage',

// Root directory for the project
rootDir: './src',

// Specify the preset used for the TypeScript compiler
preset: 'ts-jest',

// Specify the test environment
testEnvironment: 'node',

// List of file extensions Jest should look for
moduleFileExtensions: ['ts', 'js', 'json'],

// Regular expression pattern Jest uses to find test files
// This matches any file containing .spec.ts regardless of its location
testRegex: '(/|\\\\).*\\.spec\\.ts$',

// Display verbose output during test execution
verbose: true,
};

// Export Jest configuration
export default config;
Loading

0 comments on commit 77f0ada

Please sign in to comment.