gociwidey
  • Hosting
  • Indonesia
  • Website
  • Laravel
  • Development
  • Bisnis
No Result
View All Result
gociwidey
  • Hosting
  • Indonesia
  • Website
  • Laravel
  • Development
  • Bisnis
No Result
View All Result
gociwidey
No Result
View All Result
Home Development

Laravel Dusk: Pengujian End-to-End Website Laravel yang Mudah dan Efektif

Willow Grey by Willow Grey
July 23, 2025
in Development, Efektivitas, Laravel, Pengujian, Website
0
Share on FacebookShare on Twitter

Laravel Dusk adalah sahabat terbaik bagi developer Laravel yang ingin memastikan website mereka bekerja sebagaimana mestinya. Dalam artikel ini, kita akan membahas secara mendalam tentang Laravel Dusk: apa itu, mengapa penting, bagaimana cara menggunakannya, dan best practices untuk pengujian end-to-end (E2E) pada website Laravel Anda. Siap menyelam lebih dalam ke dunia pengujian dengan Dusk? Mari kita mulai!

Apa Itu Laravel Dusk dan Mengapa Pengujian End-to-End Penting?

Laravel Dusk adalah tool pengujian otomatisasi E2E yang memungkinkan Anda mensimulasikan interaksi pengguna di browser untuk menguji seluruh flow aplikasi Anda. Bayangkan Anda bisa menyuruh browser untuk membuka website, mengisi formulir, mengklik tombol, dan memeriksa apakah hasilnya sesuai dengan yang Anda harapkan. Itulah yang dilakukan Dusk.

Mengapa pengujian E2E penting?

Pengujian E2E memvalidasi seluruh sistem, dari frontend hingga backend, dan semua komponen di antaranya. Ini memastikan bahwa semuanya bekerja bersama secara harmonis. Tanpa pengujian E2E, Anda mungkin hanya menguji unit-unit kecil kode, tetapi tidak menjamin bahwa mereka akan berfungsi dengan baik ketika digabungkan.

Related Post

Laravel Validation: Validasi Data Input dengan Mudah

July 25, 2025

Cara Menggunakan Middleware pada Laravel: Panduan Lengkap

July 25, 2025

Laravel Mail: Mengirim Email dengan Mudah Menggunakan Laravel

July 25, 2025

Laravel Events: Mengimplementasikan Event Handling pada Laravel

July 24, 2025

Beberapa manfaat utama pengujian E2E meliputi:

  • Mendeteksi Bug Tingkat Tinggi: Menemukan masalah yang mungkin terlewatkan dalam pengujian unit atau integrasi.
  • Memastikan Pengalaman Pengguna yang Baik: Memastikan bahwa pengguna dapat melakukan tugas-tugas penting di website Anda dengan lancar.
  • Meningkatkan Kepercayaan pada Deployment: Memberikan keyakinan bahwa perubahan yang dilakukan tidak akan merusak fungsionalitas yang ada.
  • Mengurangi Biaya Perbaikan Bug: Menemukan dan memperbaiki bug lebih awal dalam siklus pengembangan, yang jauh lebih murah daripada memperbaikinya setelah website diluncurkan.
  • Dokumentasi Fungsionalitas: Test E2E dapat berfungsi sebagai dokumentasi hidup tentang bagaimana aplikasi Anda seharusnya bekerja.

Dengan Laravel Dusk, Anda bisa menjalankan pengujian E2E ini dengan mudah dan efisien, memastikan website Laravel Anda berjalan dengan baik di berbagai browser dan lingkungan.

Instalasi dan Konfigurasi Laravel Dusk untuk Pengujian

Sebelum kita mulai menulis test dengan Laravel Dusk, kita perlu menginstalnya dan melakukan konfigurasi awal. Ikuti langkah-langkah berikut:

  1. Instalasi melalui Composer:

    Buka terminal atau command prompt Anda dan jalankan perintah berikut:

    composer require laravel/dusk --dev

    Perintah ini akan mengunduh dan menginstal Laravel Dusk sebagai dependency pengembangan.

  2. Registrasi Service Provider:

    Setelah instalasi selesai, Anda perlu mendaftarkan service provider Dusk di config/app.php. Namun, ini biasanya sudah dilakukan secara otomatis oleh Laravel. Jika tidak, tambahkan baris berikut ke array providers:

    AppProvidersDuskServiceProvider::class,

    Catatan: Anda hanya perlu mendaftarkan service provider ini di lingkungan pengembangan (local atau testing).

  3. Instalasi ChromeDriver:

    Laravel Dusk menggunakan ChromeDriver untuk mengontrol browser Chrome secara otomatis. Anda perlu mengunduh ChromeDriver yang sesuai dengan versi Chrome yang Anda gunakan. Anda bisa mengunduhnya dari situs web resmi ChromeDriver: https://chromedriver.chromium.org/downloads. Setelah diunduh, letakkan ChromeDriver di lokasi yang mudah diakses oleh Dusk.

  4. Konfigurasi .env:

    Pastikan Anda memiliki variabel APP_URL di berkas .env Anda yang menunjuk ke URL website Laravel Anda. Misalnya:

    APP_URL=http://localhost:8000

    Anda juga mungkin perlu mengatur DB_CONNECTION ke database testing agar pengujian tidak memengaruhi data produksi Anda.

  5. Perintah dusk:install:

    Setelah menginstal dan mengkonfigurasi, jalankan perintah berikut untuk membuat direktori tests/Browser dan beberapa boilerplate test awal:

    php artisan dusk:install
  6. Memulai Server Selenium (Opsional):

    Dusk secara default menggunakan ChromeDriver lokal. Namun, Anda juga bisa menggunakan server Selenium remote. Untuk menggunakan Selenium, Anda perlu mengunduh dan menjalankan server Selenium. Ikuti petunjuk di dokumentasi Selenium: https://www.selenium.dev/documentation/. Kemudian, konfigurasi Dusk untuk menggunakan server Selenium di berkas tests/DuskTestCase.php.

Dengan langkah-langkah di atas, Laravel Dusk siap digunakan untuk pengujian E2E website Laravel Anda.

Menulis Test Pertama Anda dengan Laravel Dusk: Studi Kasus Form Login

Sekarang, mari kita coba menulis test sederhana untuk menguji form login di website Anda. Asumsikan Anda memiliki form login dengan field email dan password, serta tombol submit.

  1. Membuat Test Baru:

    Gunakan perintah artisan untuk membuat test baru:

    php artisan dusk:make LoginTest

    Ini akan membuat berkas tests/Browser/LoginTest.php.

  2. Menulis Test:

    Buka berkas LoginTest.php dan tambahkan kode berikut:

    <?php
    
    namespace TestsBrowser;
    
    use IlluminateFoundationTestingDatabaseMigrations;
    use LaravelDuskBrowser;
    use TestsDuskTestCase;
    
    class LoginTest extends DuskTestCase
    {
        use DatabaseMigrations; // Optional: Migrasi database sebelum test
    
        /**
         * A Dusk test example.
         *
         * @return void
         */
        public function testSuccessfulLogin()
        {
            $this->browse(function (Browser $browser) {
                $browser->visit('/login') // Ganti dengan URL halaman login Anda
                        ->type('email', '[email protected]') // Ganti dengan email pengguna
                        ->type('password', 'password') // Ganti dengan password pengguna
                        ->press('Login') // Ganti dengan teks tombol submit Anda
                        ->assertPathIs('/dashboard'); // Ganti dengan URL setelah login berhasil
            });
        }
    
        public function testFailedLogin()
        {
          $this->browse(function(Browser $browser) {
            $browser->visit('/login')
                    ->type('email', '[email protected]')
                    ->type('password', 'wrongpassword')
                    ->press('Login')
                    ->assertSee('The email or password you entered is incorrect');
          });
        }
    }

    Penjelasan Kode:

    • use DatabaseMigrations;: (Opsional) Menggunakan trait ini akan menjalankan migrasi database sebelum setiap test, memastikan database Anda dalam keadaan bersih.
    • $this->browse(function (Browser $browser) { ... });: Membungkus kode pengujian Anda dalam closure ini, memberikan akses ke objek $browser.
    • $browser->visit('/login'): Membuka URL /login di browser.
    • $browser->type('email', '[email protected]'): Mengisi field dengan nama email dengan nilai [email protected]. Pastikan Anda mengganti nilai ini dengan email pengguna yang valid di database Anda.
    • $browser->type('password', 'password'): Mengisi field dengan nama password dengan nilai password. Pastikan Anda mengganti nilai ini dengan password yang valid.
    • $browser->press('Login'): Menekan tombol dengan teks Login. Pastikan teks ini sesuai dengan teks tombol submit di form login Anda.
    • $browser->assertPathIs('/dashboard'): Memastikan bahwa URL saat ini adalah /dashboard setelah menekan tombol Login. Pastikan Anda mengganti nilai ini dengan URL yang seharusnya setelah login berhasil.
    • $browser->assertSee('The email or password you entered is incorrect'): Memastikan bahwa teks tertentu muncul setelah login gagal. Ganti teks ini dengan pesan kesalahan yang tepat di website anda.
  3. Menjalankan Test:

    Jalankan test dengan perintah:

    php artisan dusk

    Dusk akan membuka browser Chrome, menjalankan test, dan melaporkan hasilnya. Anda akan melihat browser melakukan interaksi sesuai dengan kode yang Anda tulis.

  4. Membuat User untuk Testing (Jika Belum Ada):

    Jika Anda belum memiliki pengguna di database, Anda bisa membuatnya dengan menggunakan factory dan seeder. Misalnya, buat factory untuk model User:

    php artisan make:factory UserFactory

    Kemudian, edit berkas database/factories/UserFactory.php dan tambahkan kode berikut:

    <?php
    
    namespace DatabaseFactories;
    
    use AppModelsUser;
    use IlluminateDatabaseEloquentFactoriesFactory;
    use IlluminateSupportStr;
    
    class UserFactory extends Factory
    {
        /**
         * The name of the factory's corresponding model.
         *
         * @var string
         */
        protected $model = User::class;
    
        /**
         * Define the model's default state.
         *
         * @return array
         */
        public function definition()
        {
            return [
                'name' => $this->faker->name,
                'email' => $this->faker->unique()->safeEmail,
                'email_verified_at' => now(),
                'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
                'remember_token' => Str::random(10),
            ];
        }
    }

    Selanjutnya, buat seeder untuk membuat pengguna:

    php artisan make:seeder UserSeeder

    Edit berkas database/seeders/UserSeeder.php dan tambahkan kode berikut:

    <?php
    
    namespace DatabaseSeeders;
    
    use AppModelsUser;
    use IlluminateDatabaseSeeder;
    
    class UserSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            User::factory()->create([
                'name' => 'Test User',
                'email' => '[email protected]',
                'password' => bcrypt('password'),
            ]);
        }
    }

    Terakhir, jalankan seeder dengan perintah:

    php artisan db:seed --class=UserSeeder

    Pastikan database Anda sudah dimigrasi sebelum menjalankan seeder.

Dengan test sederhana ini, Anda telah berhasil menjalankan pengujian E2E dengan Laravel Dusk. Anda bisa mengembangkan test ini lebih lanjut untuk menguji berbagai aspek form login Anda, seperti validasi field, pesan kesalahan, dan lain-lain.

Tips dan Best Practices Penggunaan Laravel Dusk

Untuk memaksimalkan efektivitas Laravel Dusk, berikut beberapa tips dan best practices yang perlu diperhatikan:

  • Gunakan CSS Selectors yang Spesifik: Gunakan CSS selectors yang unik dan stabil untuk mengidentifikasi elemen HTML. Hindari menggunakan selectors yang bergantung pada struktur DOM yang mungkin berubah. Lebih baik lagi, tambahkan atribut data-testid ke elemen HTML Anda dan gunakan atribut ini sebagai selector (contoh: [data-testid="login-button"]).

  • Gunakan Waits: Terkadang, website memerlukan waktu untuk memuat konten atau menyelesaikan operasi. Gunakan wait untuk memastikan bahwa elemen yang Anda cari sudah tersedia sebelum berinteraksi dengannya. Contoh:

    $browser->visit('/products')
            ->waitFor('#product-list') // Menunggu elemen dengan ID 'product-list' muncul
            ->assertSee('Product 1');
  • Abstraksikan Logika yang Berulang: Jika Anda memiliki logika yang digunakan di beberapa test, abstraksikan logika tersebut ke dalam method yang terpisah. Ini akan membuat test Anda lebih mudah dibaca dan dipelihara. Misalnya, buat helper method untuk login:

    protected function login(Browser $browser, $email, $password)
    {
        $browser->visit('/login')
                ->type('email', $email)
                ->type('password', $password)
                ->press('Login');
    }

    Kemudian, gunakan method ini di test Anda:

    public function testSuccessfulLogin()
    {
        $this->browse(function (Browser $browser) {
            $this->login($browser, '[email protected]', 'password');
            $browser->assertPathIs('/dashboard');
        });
    }
  • Gunakan Database Transactions: Gunakan database transactions untuk memastikan bahwa test Anda tidak memengaruhi data yang ada di database. Laravel secara otomatis menjalankan setiap test dalam transaction, tetapi Anda bisa mengaktifkannya secara manual jika diperlukan:

    use IlluminateFoundationTestingDatabaseTransactions;
    
    class ExampleTest extends DuskTestCase
    {
        use DatabaseTransactions;
    
        // ...
    }
  • Jalankan Test Secara Paralel: Untuk mempercepat waktu eksekusi, Anda bisa menjalankan test secara paralel. Laravel Dusk mendukung ini dengan mudah:

    php artisan dusk --parallel
  • Screenshot pada Kegagalan: Konfigurasi Dusk untuk mengambil screenshot secara otomatis ketika test gagal. Ini akan membantu Anda mengidentifikasi masalah dengan lebih mudah. Tambahkan kode berikut ke method tearDown() di tests/DuskTestCase.php:

    protected function tearDown(): void
    {
        parent::tearDown();
    
        foreach (static::$browsers as $browser) {
            if (isset($browser)) {
                $browser->driver->quit();
            }
        }
    
        if ($this->hasFailed()) {
            foreach (static::$browsers as $browser) {
                if (isset($browser)) {
                    $browser->screenshot(get_class($this) . '_' . $this->getName());
                }
            }
        }
    }
  • Konsisten dalam Penamaan Test: Beri nama test Anda secara deskriptif dan konsisten. Ini akan memudahkan Anda untuk memahami apa yang diuji oleh setiap test.

  • Jangan Menguji Hal yang Sama Berulang Kali: Hindari membuat test yang menguji fungsionalitas yang sama berulang kali. Fokus pada pengujian flow yang penting dan kompleks.

  • Gunakan Test Environments: Konfigurasi lingkungan test yang terpisah dari lingkungan pengembangan dan produksi. Ini akan memastikan bahwa test Anda tidak memengaruhi data atau konfigurasi yang sebenarnya.

  • Dokumentasikan Test Anda: Beri komentar pada test Anda untuk menjelaskan apa yang diuji dan mengapa. Ini akan membantu orang lain (dan diri Anda sendiri di masa depan) untuk memahami test Anda.

Studi Kasus: Pengujian CRUD dengan Laravel Dusk

Mari kita lihat contoh yang lebih kompleks: pengujian operasi CRUD (Create, Read, Update, Delete) pada data. Asumsikan kita memiliki resource Posts dengan form untuk membuat, mengedit, dan menghapus post.

  1. Membuat Test:

    php artisan dusk:make PostsTest
  2. Menulis Test:

    <?php
    
    namespace TestsBrowser;
    
    use IlluminateFoundationTestingDatabaseMigrations;
    use LaravelDuskBrowser;
    use TestsDuskTestCase;
    use AppModelsPost;
    
    class PostsTest extends DuskTestCase
    {
        use DatabaseMigrations;
    
        public function testCreatePost()
        {
            $this->browse(function (Browser $browser) {
                $browser->visit('/posts/create')
                        ->type('title', 'My New Post')
                        ->type('content', 'This is the content of my new post.')
                        ->press('Create Post')
                        ->assertSee('My New Post');
            });
        }
    
        public function testUpdatePost()
        {
            $post = Post::factory()->create(['title' => 'Original Title']);
    
            $this->browse(function (Browser $browser) use ($post) {
                $browser->visit('/posts/' . $post->id . '/edit')
                        ->type('title', 'Updated Title')
                        ->press('Update Post')
                        ->assertSee('Updated Title');
            });
        }
    
        public function testDeletePost()
        {
            $post = Post::factory()->create(['title' => 'Post to Delete']);
    
            $this->browse(function (Browser $browser) use ($post) {
                $browser->visit('/posts')
                        ->click('#delete-post-' . $post->id) // Pastikan ada tombol delete dengan ID ini
                        ->assertDontSee('Post to Delete');
            });
        }
    }

    Penjelasan:

    • testCreatePost(): Menguji pembuatan post baru.
    • testUpdatePost(): Menguji pembaruan post yang sudah ada.
    • testDeletePost(): Menguji penghapusan post.

    Pastikan Anda menyesuaikan selector dan nilai yang digunakan dalam test dengan struktur HTML dan data yang ada di website Anda.

Mengatasi Masalah Umum dengan Laravel Dusk: Debugging dan Troubleshooting

Meskipun Laravel Dusk adalah tool yang hebat, Anda mungkin menghadapi beberapa masalah saat menggunakannya. Berikut beberapa masalah umum dan cara mengatasinya:

  • Elemen Tidak Ditemukan:

    • Penyebab: Elemen yang Anda cari belum dimuat atau selector yang Anda gunakan salah.
    • Solusi: Gunakan waitFor() untuk menunggu elemen muncul. Periksa kembali selector Anda. Gunakan developer tools di browser untuk memastikan selector Anda benar.
  • Timeout:

    • Penyebab: Operasi membutuhkan waktu lebih lama dari yang diharapkan.
    • Solusi: Tingkatkan nilai timeout di konfigurasi Dusk (config/dusk.php). Gunakan wait yang lebih spesifik. Optimalkan kode website Anda untuk meningkatkan kinerja.
  • ChromeDriver Tidak Kompatibel:

    • Penyebab: Versi ChromeDriver tidak sesuai dengan versi Chrome yang Anda gunakan.
    • Solusi: Unduh ChromeDriver yang sesuai dengan versi Chrome Anda.
  • Test Gagal Secara Acak:

    • Penyebab: Masalah sinkronisasi atau kondisi balapan.
    • Solusi: Gunakan wait yang lebih banyak. Pastikan test Anda bersifat deterministik (tidak bergantung pada waktu atau faktor eksternal lainnya).
  • Session Cookies Tidak Tersimpan:

    • Penyebab: Konfigurasi session yang salah atau masalah dengan cookie.
    • Solusi: Pastikan konfigurasi session Anda benar (config/session.php). Periksa apakah domain dan path cookie sudah benar.
  • Error “Call to undefined method FacebookWebDriverRemoteRemoteWebDriver::setFileDetector()”:

    • Penyebab: Versi facebook/webdriver yang tidak kompatibel.
    • Solusi: Update atau downgrade package facebook/webdriver menggunakan Composer.

Untuk membantu debugging, Anda bisa menggunakan:

  • $browser->pause(milliseconds): Menunda eksekusi test untuk memberikan waktu bagi Anda untuk mengamati browser.
  • $browser->screenshot('debug'): Mengambil screenshot dari browser pada saat tertentu.
  • dump($browser->element('#element-id')->getAttribute('innerHTML')): Menampilkan konten HTML dari elemen tertentu.
  • error_log($message): Menulis pesan ke log PHP.

Dengan kombinasi tips dan best practices yang telah kita bahas, Anda akan dapat mengatasi sebagian besar masalah yang mungkin Anda hadapi saat menggunakan Laravel Dusk.

Kesimpulan: Memanfaatkan Laravel Dusk untuk Kualitas Website Laravel yang Lebih Baik

Laravel Dusk adalah tool yang ampuh untuk pengujian E2E website Laravel Anda. Dengan Dusk, Anda dapat memastikan bahwa seluruh sistem bekerja bersama secara harmonis, memberikan pengalaman pengguna yang baik, dan mengurangi risiko bug yang mahal.

Meskipun awalnya mungkin terasa sedikit rumit, dengan latihan dan pemahaman yang baik, Anda akan dapat memanfaatkan Laravel Dusk untuk meningkatkan kualitas dan keandalan website Laravel Anda secara signifikan. Jangan ragu untuk bereksperimen, mencoba berbagai teknik, dan terus belajar. Selamat mencoba dan semoga sukses dengan pengujian E2E Anda!

Tags: Automated TestingBrowser TestingDuskEnd-to-End TestingIntegration TestingLaravelLaravel DuskPHPTestingWebsite Testing
Willow Grey

Willow Grey

Related Posts

Data

Laravel Validation: Validasi Data Input dengan Mudah

by Willow Grey
July 25, 2025
Development

Cara Menggunakan Middleware pada Laravel: Panduan Lengkap

by Seraphina Moon
July 25, 2025
Development

Laravel Mail: Mengirim Email dengan Mudah Menggunakan Laravel

by Atticus Finch
July 25, 2025
Next Post

Laravel Telescope: Debugging Aplikasi Laravel dengan Mudah

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended

Harga Jasa Pembuatan Website E-Commerce di Jakarta: Investasi Terbaik untuk Bisnis

May 29, 2025

Hosting SSD Tercepat untuk WordPress di Indonesia: Website Ngebut Tanpa Ribet!

May 17, 2025

Hosting SSD Murah: Tingkatkan Kecepatan Website WordPress Anda Secara Drastis

March 23, 2025

Hosting WordPress SSD dengan Fitur WordPress Staging: Solusi Terbaik untuk Website Anda

July 5, 2025

Laravel Validation: Validasi Data Input dengan Mudah

July 25, 2025

Cara Menggunakan Middleware pada Laravel: Panduan Lengkap

July 25, 2025

Laravel Mail: Mengirim Email dengan Mudah Menggunakan Laravel

July 25, 2025

Laravel Events: Mengimplementasikan Event Handling pada Laravel

July 24, 2025

gociwidey

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Laravel Validation: Validasi Data Input dengan Mudah
  • Cara Menggunakan Middleware pada Laravel: Panduan Lengkap
  • Laravel Mail: Mengirim Email dengan Mudah Menggunakan Laravel

Categories

  • Admin
  • Adopsi
  • Afiliasi
  • Agency
  • AI
  • Akses
  • Akuntansi
  • Akurat
  • Alasan
  • Algoritma
  • Alternatif
  • Aman
  • Analisis
  • Android
  • Animasi
  • API
  • Aplikasi
  • Authentication
  • Backend
  • Backup
  • Bahasa
  • Bandwidth
  • Batasan
  • Belajar
  • Berbagi
  • Biaya
  • Bisnis
  • Blog
  • Bootstrap
  • Brand
  • CDN
  • Cepat
  • Chatbot
  • ChatGPT
  • Cloud
  • Coding
  • Company Profile
  • Complete
  • Composer
  • Contoh
  • cPanel
  • CRM
  • CRUD
  • CSS
  • Dampak
  • Data
  • Database
  • Debugging
  • Dependency
  • Deployment
  • Desain
  • Development
  • Diagnosis
  • Digital Marketing
  • Diskon
  • Dokumentasi
  • Domain
  • Download
  • Downtime
  • Dukungan
  • E-Commerce
  • Edit
  • Efektivitas
  • Efisiensi
  • Ekonomis
  • Eloquent
  • Email
  • Engagement
  • Error
  • Error generating categories
  • Etika
  • Events
  • Excel
  • Fitur
  • Forum
  • Foto
  • Framework
  • Freelance
  • Full-Stack
  • Game
  • Garansi
  • Google
  • Gratis
  • Harga
  • Hemat
  • Here are 5 categories based on the provided title: Hosting
  • Here are 5 categories based on the provided title: Rekomendasi Hosting Murah untuk Toko Online dengan Bandwidth Besar: Sukseskan Bisnismu! Hosting
  • Here are 5 categories based on the title "Tips Optimasi Performa Aplikasi Laravel agar Lebih Cepat: Website Anti Lemot": **Laravel
  • Hosting
  • HTML
  • Iklan
  • Implementasi
  • Indonesia
  • Industri
  • Informasi
  • Inovasi
  • Input
  • Inspirasi
  • Instalasi
  • Install
  • Integrasi
  • Interface
  • Investasi
  • Jakarta
  • Jasa
  • JavaScript
  • Joomla
  • Kampanye
  • Kapasitas
  • Karir
  • Karyawan
  • Keamanan
  • Kebutuhan
  • Kecepatan
  • Kehidupan
  • Kelebihan
  • Kemudahan
  • Kepuasan
  • Kerja
  • Kesehatan
  • Keuangan
  • Keuntungan
  • Kode
  • Komunitas
  • Konsep
  • Konten
  • Kontrol
  • Konversi
  • Kreatif
  • Kualitas
  • Kursus
  • Laporan
  • Laravel
  • Layanan
  • Linux
  • Logistik
  • Logo
  • Loyalitas
  • Machine Learning
  • Mahasiswa
  • Maintenance
  • Manfaat
  • Marketing
  • Masa Depan
  • Media Sosial
  • Mesin Pencari
  • Middleware
  • Migrasi
  • Mitos
  • Mobile
  • Mobilitas
  • Model
  • Modern
  • Mudah
  • Murah
  • Online
  • Open Source
  • Opini
  • Optimal
  • Optimasi
  • ORM
  • Otomatisasi
  • Package
  • Panduan
  • Payment
  • PDF
  • Pekerjaan
  • Pelanggan
  • Pelatihan
  • Peluang
  • Pemanfaatan
  • Pembandingan
  • Pembuatan
  • Pemesanan
  • Pemula
  • Pendidikan
  • Pengalaman
  • Pengembangan
  • Pengenalan
  • Pengertian
  • Penggunaan
  • Pengobatan
  • Pengolahan
  • Pengujian
  • Penipuan
  • Penjualan
  • Penyimpanan
  • Perangkat
  • Perbandingan
  • Performa
  • Perkembangan
  • Personalisasi
  • Pertanian
  • Pertumbuhan
  • Perusahaan
  • Petani
  • PHP
  • Pilihan
  • Platform
  • Pondasi
  • Portofolio
  • Praktis
  • Prediksi
  • Premium
  • Presentasi
  • Pribadi
  • Produktivitas
  • Profesional
  • Profitabilitas
  • Programmer
  • Promo
  • Proteksi
  • Proyek
  • Python
  • Queues
  • React
  • Realita
  • Referensi
  • Rekomendasi
  • Relationship
  • Responsive
  • Restoran
  • Retail
  • Review
  • Risiko
  • Saham
  • Sales
  • Scheduler
  • Sederhana
  • Selamanya
  • SEO
  • Sertifikasi
  • Server
  • Skalabilitas
  • Skill
  • Software
  • Solusi
  • Sosial
  • SSD
  • SSL
  • Stabil
  • Staging
  • Startup
  • Strategi
  • Studi Kasus
  • Subdomain
  • Sumber Daya
  • Support
  • Surabaya
  • Syarat
  • Tampilan
  • Tanggung Jawab
  • Tantangan
  • Teknologi
  • Template
  • Terbaik
  • Terbaru
  • Terjangkau
  • Terjemahan
  • Terpercaya
  • Tim
  • Tips
  • Toko Online
  • Tools
  • Traffic
  • Tren
  • Trik
  • Troubleshooting
  • Tutorial
  • UKM
  • UMKM
  • Undangan
  • Unlimited
  • Upgrade
  • Uptime
  • User-Friendly
  • Validasi
  • Video
  • VPS
  • Web
  • Web Development
  • Website
  • Windows
  • WordPress
  • XAMPP

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 gociwidey.

No Result
View All Result
  • Hosting
  • Indonesia
  • Website
  • Laravel
  • Development
  • Bisnis

© 2024 gociwidey.