Sınıflar, Modüller & JSON

Sınıflar, Modüller & JSON: Sınıf Hiyerarşisi — class Dog extends Animal JavaScript'te modern kod mimarisi nesne yönelimli sınıflar (ES6 Classes), modül yükleyicileri (import/expo

Sınıf Hiyerarşisi — class Dog extends Animal

JavaScript'te modern kod mimarisi nesne yönelimli sınıflar (ES6 Classes), modül yükleyicileri (import/export) ve sunuculardan veri getirdiğimiz JSON formatı üzerine kurulur. Bunu bir mutfak organizasyonu gibi düşün: sınıf, tarifi ve gerekli aletleri bir arada tutan tarif kartıdır; modül, o kartın durduğu çekmecedir; JSON ise siparişin mutfağa ulaşan yazılı hâlidir. Otomasyon testlerinde Page Object Model (POM) yapısı tamamen sınıflarla tasarlanır. Peki test kodunu düz fonksiyonlarla da yazabilecekken neden bu yapıya ihtiyaç duyuyoruz? Çünkü bir login formunun locator'ı değiştiğinde, sınıfsız bir suite'te o selector'ı 40 dosyada aramak zorunda kalırsın; POM'da tek bir `LoginPage` sınıfında değiştirirsin. Java'daki karşılığı birebirdir — `class LoginPage` + `import` yerine `export class LoginPage` + `import` yazarsın; fark şu ki JavaScript'te `import` yolu dosya sistemine bağlıdır, Java'daki gibi package adına değil. QA açısından bu ayrım bakım maliyetinin ta kendisidir: UI'ı sık değişen bir üründe POM'suz yazılmış bir suite, ikinci sprintte silinip yeniden yazılır.

Java Class vs JavaScript ES6 Class — Karşılaştırma

ES6 Module: import / export Kullanımı

// ── pageObjects/BasePage.js ────────────────────── export class BasePage { // named export constructor(url) { this.url = url; } open() { console.log("Navigating to:", this.url); } } export const BASE_URL = "https://learnqa.dev"; // named export (sabit) // ── pageObjects/LoginPage.js ───────────────────── import { BasePage, BASE_URL } from './BasePage.js'; // named import class LoginPage extends BasePage { constructor() { super(BASE_URL + "/login"); // super() ile parent constructor çağrısı } fillForm(user, pass) { return `Logging in as ${user}`; } } export default LoginPage; // default export // ── tests/login.test.js ────────────────────────── import LoginPage from '../pageObjects/LoginPage.js'; // default import const page = new LoginPage(); page.open(); console.log(page.fillForm("hasan", "secret123"));

Micro Lab: JavaScript QA kod yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Adim Adim: JavaScript QA kod yazma

Amaci ve asenkron bagimliliklari oku

await / Promise zincirini dogru yere yerlestir

assertion veya beklenti satirini tamamla

Kodu calistirip console veya test ciktisini oku

Flaky olursa bekleme stratejisi veya retry ekle

JavaScript QA kodunu guvenli yazma ve test etme sirasi nedir?