Bu proje, modern web geliştirme standartlarını ve test stratejilerini birleştirerek verimli, ölçeklenebilir ve sürdürülebilir bir kod yapısı sunmayı hedefler. Proje, Angular tabanlıdır ve kapsamlı Cypress ve Unit testleri içerir.
- Başlangıç
- Proje Yapısı
- Test Stratejileri
- Kurulum
- Geliştirme
- Test Çalıştırma
- Kod Standartları ve En İyi Uygulamalar
- Katkı Rehberi
Bu proje, modern web uygulamalarının temel ihtiyaçlarını karşılamak üzere tasarlanmış, modüler ve test edilebilir bir mimari kullanır.
- Angular: Web uygulaması geliştirmek için kullanılan framework.
- Cypress: E2E (uçtan uca) testler için modern test aracı.
- TypeScript: Güçlü tip kontrolü sağlayan JavaScript süper seti.
- Material Design: Kullanıcı dostu UI bileşenleri.
- RxJS: Reactif programlama için kullanılan kütüphane.
src/
├── app/
│ ├── core/ # Servisler ve merkezi logic.
│ ├── features/ # Modüler özellik bileşenleri.
│ │ ├── dashboard/ # Dashboard bileşenleri ve routing.
│ │ └── users/ # Users bileşenleri ve routing.
│ ├── shared/ # Paylaşılan modüller (UI bileşenleri, yardımcı fonksiyonlar).
│ └── app.module.ts # Ana modül.
├── assets/ # Statik dosyalar (görseller, JSON vb.).
├── environments/ # Ortam yapılandırmaları (dev/prod).
└── styles/ # Global stil dosyaları.
Proje, farklı seviyelerde test stratejileri kullanarak güvenilirlik ve kaliteyi artırmayı hedefler:
- Amaç: Tek bir bileşenin veya fonksiyonun doğru çalıştığını doğrulamak.
- Araçlar: Jasmine ve Karma.
- Konum:
src/app/**/*.spec.ts
- Örnek Test:
it('should return correct total price', () => { const result = calculateTotal([100, 200, 300]); expect(result).toBe(600); });
- Amaç: Modüller arası entegrasyonların sorunsuz çalıştığını doğrulamak.
- Araçlar: Jasmine, Karma.
- Konum:
src/app/**/*.spec.ts
- Örnek Test:
it('should render user list correctly', () => { component.users = [{ name: 'Ali' }, { name: 'Veli' }]; fixture.detectChanges(); const userList = fixture.nativeElement.querySelectorAll('.user-item'); expect(userList.length).toBe(2); });
- Amaç: Uygulamanın kullanıcı perspektifinden doğru çalıştığını doğrulamak.
- Araçlar: Cypress.
- Konum:
cypress/e2e/**/*.cy.ts
- Örnek Test:
describe('DashboardComponent', () => { it('should display products', () => { cy.visit('/dashboard'); cy.get('.product-card').should('have.length', 2); }); it('should navigate to the Users page', () => { cy.visit('/dashboard'); cy.get('.go-to-users-btn').click(); cy.url().should('include', '/users'); }); });
Projenizi klonladıktan sonra bağımlılıkları yüklemek için aşağıdaki adımları izleyin:
git clone <repository-url>
cd project-directory
npm install
Geliştirme ortamını başlatmak için şu komutu çalıştırın:
npm start
Tarayıcınızı açın ve http://localhost:4200
adresine gidin.
Unit testlerini çalıştırmak için şu komutu kullanın:
npm run test
Cypress ile E2E testlerini çalıştırmak için şu komutu kullanın:
npm run e2e
- Kodlama standartları için ESLint ve Prettier kullanılmıştır.
- Tüm bileşenler modüler ve yeniden kullanılabilir şekilde tasarlanmıştır.
- Responsive tasarım için modern CSS özellikleri ve grid sistemi kullanılmıştır.
- Yeni bir özellik eklemek veya hata düzeltmek için bir branch oluşturun.
- Kod değişikliklerinizi yaptıktan sonra testleri çalıştırarak doğruluğunu kontrol edin.
- Pull request açmadan önce kodu linters ve formatlama araçlarıyla kontrol edin.