fix: resolve remaining markdownlint issues
- Fix line length issues in documentation files - Add language specifications to code blocks - Resolve duplicate heading in README.md - Ensure all markdown files follow best practices
This commit is contained in:
parent
afb58ef4b1
commit
e69fa95463
@ -233,5 +233,5 @@ Pour toute question ou problème :
|
||||
|
||||
---
|
||||
|
||||
**Version actuelle** : 0.1.0
|
||||
**Version actuelle** : 0.1.0
|
||||
**Dernière mise à jour** : Janvier 2024
|
||||
|
@ -320,10 +320,10 @@ test('should upload document successfully', async () => {
|
||||
test('should return demo data on API error', async () => {
|
||||
// Mock de l'erreur API
|
||||
mockAxios.onPost('/api/documents/upload').reply(500)
|
||||
|
||||
|
||||
const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
|
||||
const result = await documentApi.upload(file)
|
||||
|
||||
|
||||
expect(result.id).toMatch(/^demo-/)
|
||||
expect(result.name).toBe('test.pdf')
|
||||
})
|
||||
|
@ -115,35 +115,35 @@ server {
|
||||
# Certificats SSL
|
||||
ssl_certificate /path/to/certificate.crt;
|
||||
ssl_certificate_key /path/to/private.key;
|
||||
|
||||
|
||||
# Configuration SSL
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
|
||||
# HSTS
|
||||
add_header Strict-Transport-Security "max-age=63072000" always;
|
||||
|
||||
|
||||
# Root directory
|
||||
root /var/www/4nk-ia-front/dist;
|
||||
index index.html;
|
||||
|
||||
|
||||
# Gestion des routes SPA
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
|
||||
# Cache des assets statiques
|
||||
location /assets/ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
|
||||
|
||||
# Sécurité
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
|
||||
|
||||
# Compression
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
@ -278,28 +278,28 @@ on:
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '22.12'
|
||||
cache: 'npm'
|
||||
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
|
||||
- name: Run tests
|
||||
run: npm run test
|
||||
|
||||
|
||||
- name: Build application
|
||||
run: npm run build
|
||||
env:
|
||||
NODE_ENV: production
|
||||
VITE_API_URL: ${{ secrets.API_URL }}
|
||||
|
||||
|
||||
- name: Deploy to server
|
||||
uses: appleboy/ssh-action@v0.1.5
|
||||
with:
|
||||
|
@ -28,7 +28,7 @@ export default defineConfig({
|
||||
test: {
|
||||
environment: 'jsdom',
|
||||
globals: true,
|
||||
coverage: {
|
||||
coverage: {
|
||||
provider: 'v8',
|
||||
reporter: ['text', 'json', 'html'],
|
||||
exclude: [
|
||||
@ -86,13 +86,13 @@ const renderWithProviders = (ui: React.ReactElement) => {
|
||||
describe('Layout', () => {
|
||||
it('should render the application title', () => {
|
||||
renderWithProviders(<Layout><div>Test content</div></Layout>)
|
||||
|
||||
|
||||
expect(screen.getByText('4NK IA - Front Notarial')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should render navigation tabs', () => {
|
||||
renderWithProviders(<Layout><div>Test content</div></Layout>)
|
||||
|
||||
|
||||
expect(screen.getByRole('tablist')).toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
@ -228,19 +228,19 @@ const renderWithProviders = (ui: React.ReactElement) => {
|
||||
describe('UploadView', () => {
|
||||
it('should render upload area', () => {
|
||||
renderWithProviders(<UploadView />)
|
||||
|
||||
|
||||
expect(screen.getByText(/glisser-déposer/i)).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should handle file upload', async () => {
|
||||
const user = userEvent.setup()
|
||||
renderWithProviders(<UploadView />)
|
||||
|
||||
|
||||
const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
|
||||
const input = screen.getByLabelText(/sélectionner des fichiers/i)
|
||||
|
||||
|
||||
await user.upload(input, file)
|
||||
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText('test.pdf')).toBeInTheDocument()
|
||||
})
|
||||
@ -249,12 +249,12 @@ describe('UploadView', () => {
|
||||
it('should display document list after upload', async () => {
|
||||
const user = userEvent.setup()
|
||||
renderWithProviders(<UploadView />)
|
||||
|
||||
|
||||
const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
|
||||
const input = screen.getByLabelText(/sélectionner des fichiers/i)
|
||||
|
||||
|
||||
await user.upload(input, file)
|
||||
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByRole('list')).toBeInTheDocument()
|
||||
expect(screen.getByText('test.pdf')).toBeInTheDocument()
|
||||
@ -288,13 +288,13 @@ describe('Navigation', () => {
|
||||
it('should navigate between tabs', async () => {
|
||||
const user = userEvent.setup()
|
||||
renderWithProviders(<App />)
|
||||
|
||||
|
||||
// Vérifier que l'onglet Upload est actif par défaut
|
||||
expect(screen.getByText('Upload')).toHaveAttribute('aria-selected', 'true')
|
||||
|
||||
|
||||
// Cliquer sur l'onglet Extraction
|
||||
await user.click(screen.getByText('Extraction'))
|
||||
|
||||
|
||||
expect(screen.getByText('Extraction')).toHaveAttribute('aria-selected', 'true')
|
||||
expect(screen.getByText('Upload')).toHaveAttribute('aria-selected', 'false')
|
||||
})
|
||||
@ -372,7 +372,7 @@ afterAll(() => server.close())
|
||||
describe('API Integration', () => {
|
||||
it('should extract document data', async () => {
|
||||
const result = await documentApi.extract('doc_123')
|
||||
|
||||
|
||||
expect(result.documentId).toBe('doc_123')
|
||||
expect(result.identities).toHaveLength(1)
|
||||
expect(result.identities[0].firstName).toBe('Jean')
|
||||
@ -380,7 +380,7 @@ describe('API Integration', () => {
|
||||
|
||||
it('should handle API errors gracefully', async () => {
|
||||
const result = await documentApi.analyze('doc_123')
|
||||
|
||||
|
||||
// Devrait retourner des données de démonstration
|
||||
expect(result.documentId).toBe('doc_123')
|
||||
expect(result.credibilityScore).toBeDefined()
|
||||
@ -403,7 +403,7 @@ import App from '../../src/App'
|
||||
describe('Performance', () => {
|
||||
it('should render app within acceptable time', () => {
|
||||
const start = performance.now()
|
||||
|
||||
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<BrowserRouter>
|
||||
@ -411,10 +411,10 @@ describe('Performance', () => {
|
||||
</BrowserRouter>
|
||||
</Provider>
|
||||
)
|
||||
|
||||
|
||||
const end = performance.now()
|
||||
const renderTime = end - start
|
||||
|
||||
|
||||
// Le rendu initial devrait prendre moins de 100ms
|
||||
expect(renderTime).toBeLessThan(100)
|
||||
})
|
||||
@ -434,7 +434,7 @@ import { UploadView } from '../../src/views/UploadView'
|
||||
describe('Memory Management', () => {
|
||||
it('should not leak memory on multiple renders', () => {
|
||||
const initialMemory = (performance as any).memory?.usedJSHeapSize || 0
|
||||
|
||||
|
||||
// Rendre et nettoyer plusieurs fois
|
||||
for (let i = 0; i < 10; i++) {
|
||||
render(
|
||||
@ -446,10 +446,10 @@ describe('Memory Management', () => {
|
||||
)
|
||||
cleanup()
|
||||
}
|
||||
|
||||
|
||||
const finalMemory = (performance as any).memory?.usedJSHeapSize || 0
|
||||
const memoryIncrease = finalMemory - initialMemory
|
||||
|
||||
|
||||
// L'augmentation de mémoire devrait être raisonnable
|
||||
expect(memoryIncrease).toBeLessThan(10 * 1024 * 1024) // 10MB
|
||||
})
|
||||
@ -482,7 +482,7 @@ describe('Accessibility', () => {
|
||||
</BrowserRouter>
|
||||
</Provider>
|
||||
)
|
||||
|
||||
|
||||
const results = await axe(container)
|
||||
expect(results).toHaveNoViolations()
|
||||
})
|
||||
@ -497,7 +497,7 @@ describe('Accessibility', () => {
|
||||
</BrowserRouter>
|
||||
</Provider>
|
||||
)
|
||||
|
||||
|
||||
expect(screen.getByRole('banner')).toBeInTheDocument()
|
||||
expect(screen.getByRole('tablist')).toBeInTheDocument()
|
||||
})
|
||||
@ -552,22 +552,22 @@ on: [push, pull_request]
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '22.12'
|
||||
cache: 'npm'
|
||||
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
|
||||
- name: Run tests
|
||||
run: npm run test:coverage
|
||||
|
||||
|
||||
- name: Upload coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
|
Loading…
x
Reference in New Issue
Block a user