<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Getting Started</title><link>https://sourceforge.net/p/lastest/wiki/Getting%2520Started/</link><description>Recent changes to Getting Started</description><atom:link href="https://sourceforge.net/p/lastest/wiki/Getting%20Started/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 06 May 2026 09:06:54 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/lastest/wiki/Getting%20Started/feed" rel="self" type="application/rss+xml"/><item><title>Getting Started modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Getting%2520Started/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -24,19 +24,23 @@
     cd lastest
     docker compose up -d            # PostgreSQL on :5432 (volume: lastest-pgdata)
     pnpm install

-    pnpm db:push                    # apply schema
-    pnpm stack                      # REQUIRED: create k3d cluster + build/import EB image
-    pnpm dev                        # http://localhost:3000
-
-Required `.env.local` keys:
-
-    :::bash
+    
+    # Configure env (required before pnpm dev -- without EB_PROVISIONER the app
+    # starts but no test can ever provision an Embedded Browser).
+    cp .env.example .env.local
+    cat &amp;gt;&amp;gt; .env.local &amp;lt;&amp;lt;eof eb_provisioner="kubernetes" eb_namespace="lastest" eb_image="lastest-embedded-browser:latest" lastest_url="http://host.k3d.internal:3000" system_eb_token="$(openssl" rand="" -hex="" 32)="" -="" database_url="postgresql://lastest:lastest@localhost:5432/lastest" +="" eof="" pnpm="" db:push="" #="" apply="" schema="" stack="" required:="" create="" k3d="" cluster="" build="" import="" eb="" image="" dev="" http:="" localhost:3000=""&amp;gt; `.env.example` already pins `DATABASE_URL` to the bundled compose Postgres -- the block above just appends the EB vars and a freshly generated `SYSTEM_EB_TOKEN`. `EB_PROVISIONER` defaults to `'none'` in code, so omitting it lets `pnpm dev` start cleanly but every test silently fails to provision an EB. Always set it.

 ### Requirements

&amp;lt;/eof&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:54 -0000</pubDate><guid>https://sourceforge.net2d45f07622bb2593b5d6c486137ebf1f823f3a44</guid></item><item><title>Getting Started modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Getting%2520Started/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -2,29 +2,47 @@

 ## Installation

-### Option 1: Docker (recommended)
+&amp;gt; Tests **always** run inside an Embedded Browser pod -- there is no local-Playwright fallback. Even local development requires the EB stack (`pnpm stack`).
+
+### Option 1: Docker Compose (home server)

     :::bash
     git clone https://github.com/las-team/lastest.git
     cd lastest

-    docker-compose up -d
+    docker compose up -d

-Open [http://localhost:3000](http://localhost:3000) -- that's it.
+Starts PostgreSQL + the Lastest app on `:3000`. Open [http://localhost:3000](http://localhost:3000).

-### Option 2: From source
+EB pods are provisioned by the app into a Kubernetes cluster you configure separately -- see [Docker Deployment] for prod EB wiring.
+
+### Option 2: From source (host dev)
+
+The local-dev architecture is **host app + host postgres + k3d-hosted EB pods**.

     :::bash
     git clone https://github.com/las-team/lastest.git
     cd lastest

+    docker compose up -d            # PostgreSQL on :5432 (volume: lastest-pgdata)
     pnpm install
-    pnpm dev
+    pnpm db:push                    # apply schema
+    pnpm stack                      # REQUIRED: create k3d cluster + build/import EB image
+    pnpm dev                        # http://localhost:3000

-Open [http://localhost:3000](http://localhost:3000)
+Required `.env.local` keys:
+

+    :::bash
+    EB_PROVISIONER=kubernetes
+    EB_NAMESPACE=lastest
+    EB_IMAGE=lastest-embedded-browser:latest
+    LASTEST_URL=http://host.k3d.internal:3000
+    SYSTEM_EB_TOKEN=$(openssl rand -hex 32)
+    DATABASE_URL=postgresql://lastest:lastest@localhost:5432/lastest

 ### Requirements

-- **Docker**: Docker 20+ and Docker Compose
-- **From source**: Node.js 18+, pnpm
+- **Docker**: Docker 20+ with Compose v2
+- **Node.js**: 18+ and pnpm 10.x
+- **For running/recording tests** (always required): `k3d` &amp;gt;= 5.6, `kubectl`, `openssl`

 ---

@@ -82,6 +100,13 @@
     pnpm db:studio        # Open Drizzle Studio for database inspection
     pnpm db:push          # Push schema changes to database
     pnpm db:generate      # Generate Drizzle migrations

-    pnpm db:reset         # Reset database (removes SQLite DB + screenshots/baselines)
+    pnpm db:reset         # Reset database (drops PostgreSQL tables + clears screenshots/baselines)
     pnpm db:seed          # Seed test data
     pnpm test:visual      # Run visual tests via CLI
+    
+    # Local k3d cluster -- hosts dynamically-provisioned EB pods only
+    pnpm stack            # Create k3d cluster + build/import EB image
+    pnpm stack:refresh    # Rebuild + import EB image after editing packages/embedded-browser
+    pnpm stack:status     # Cluster + EB jobs/pods + host /api/health
+    pnpm stack:logs       # Tail EB pod logs
+    pnpm stack:stop       # Delete the cluster
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:53 -0000</pubDate><guid>https://sourceforge.netbb0cac8d70b8dd1850b4bab029113e43a6234fdf</guid></item><item><title>Getting Started modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Getting%2520Started/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -5,8 +5,8 @@
 ### Option 1: Docker (recommended)

     :::bash

-    git clone https://github.com/dexilion-team/lastest2.git
-    cd lastest2
+    git clone https://github.com/las-team/lastest.git
+    cd lastest
     docker-compose up -d

 Open [http://localhost:3000](http://localhost:3000) -- that's it.
@@ -14,8 +14,8 @@
 ### Option 2: From source

     :::bash

-    git clone https://github.com/dexilion-team/lastest2.git
-    cd lastest2
+    git clone https://github.com/las-team/lastest.git
+    cd lastest
     pnpm install
     pnpm dev

@@ -32,7 +32,7 @@


 1. **Create an account** -- local authentication, no external auth required
 2. **Add a repository** -- set its local path or connect GitHub/GitLab
-3. **Click Record** -- interact with your app, Lastest2 captures everything
+3. **Click Record** -- interact with your app, Lastest captures everything
 4. **AI generates test code** automatically (or use the recorded interactions directly)
 5. **Run the test** -- screenshots are captured and diffed against baselines
 6. **Review visual changes** -- approve or reject
@@ -43,7 +43,7 @@

 ### Repositories

-A repository in Lastest2 represents your project. You can:
+A repository in Lastest represents your project. You can:

 - Point it to a local directory
 - Connect it to a GitHub repo (via OAuth)
 - Connect it to a GitLab repo (including self-hosted)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:51 -0000</pubDate><guid>https://sourceforge.net2969d6edce74f7a974bd83536d249ee8d6710087</guid></item><item><title>Getting Started modified by Viktor Fási</title><link>https://sourceforge.net/p/lastest/wiki/Getting%2520Started/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-getting-started"&gt;Getting Started&lt;/h1&gt;
&lt;h2 id="h-installation"&gt;Installation&lt;/h2&gt;
&lt;h3 id="h-option-1-docker-recommended"&gt;Option 1: Docker (recommended)&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/dexilion-team/lastest2.git
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lastest2
docker-compose&lt;span class="w"&gt; &lt;/span&gt;up&lt;span class="w"&gt; &lt;/span&gt;-d
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow"&gt;http://localhost:3000&lt;/a&gt; -- that's it.&lt;/p&gt;
&lt;h3 id="h-option-2-from-source"&gt;Option 2: From source&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/dexilion-team/lastest2.git
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lastest2
pnpm&lt;span class="w"&gt; &lt;/span&gt;install
pnpm&lt;span class="w"&gt; &lt;/span&gt;dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="h-requirements"&gt;Requirements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt;: Docker 20+ and Docker Compose&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From source&lt;/strong&gt;: Node.js 18+, pnpm&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-first-steps"&gt;First Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create an account&lt;/strong&gt; -- local authentication, no external auth required&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add a repository&lt;/strong&gt; -- set its local path or connect GitHub/GitLab&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Click Record&lt;/strong&gt; -- interact with your app, Lastest2 captures everything&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI generates test code&lt;/strong&gt; automatically (or use the recorded interactions directly)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run the test&lt;/strong&gt; -- screenshots are captured and diffed against baselines&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review visual changes&lt;/strong&gt; -- approve or reject&lt;/li&gt;
&lt;/ol&gt;
&lt;hr/&gt;
&lt;h2 id="h-understanding-the-workflow"&gt;Understanding the Workflow&lt;/h2&gt;
&lt;h3 id="h-repositories"&gt;Repositories&lt;/h3&gt;
&lt;p&gt;A repository in Lastest2 represents your project. You can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Point it to a local directory&lt;/li&gt;
&lt;li&gt;Connect it to a GitHub repo (via OAuth)&lt;/li&gt;
&lt;li&gt;Connect it to a GitLab repo (including self-hosted)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h-tests"&gt;Tests&lt;/h3&gt;
&lt;p&gt;Tests are Playwright scripts that navigate your app and capture screenshots. They can be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Recorded&lt;/strong&gt; manually via the built-in browser recorder&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generated&lt;/strong&gt; by AI from a URL, spec, or description&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Created autonomously&lt;/strong&gt; by the Play Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h-builds"&gt;Builds&lt;/h3&gt;
&lt;p&gt;A build is a collection of test runs. Builds can be triggered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manually&lt;/strong&gt; -- click "Run" in the UI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;By webhook&lt;/strong&gt; -- when a PR is opened/updated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;By CI/CD&lt;/strong&gt; -- via the GitHub Action or CLI runner&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h-baselines"&gt;Baselines&lt;/h3&gt;
&lt;p&gt;The first screenshot from a test becomes the baseline. Subsequent runs compare against it. When you approve a visual change, the new screenshot becomes the baseline.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-commands-reference"&gt;Commands Reference&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pnpm&lt;span class="w"&gt; &lt;/span&gt;dev&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="c1"&gt;# Start development server on localhost:3000&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;build&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="c1"&gt;# Production build&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="c1"&gt;# Start production server&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;lint&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="c1"&gt;# Run ESLint&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="c1"&gt;# Run unit tests (Vitest)&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;test:watch&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="c1"&gt;# Run unit tests in watch mode&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;test:coverage&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Run tests with coverage report&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;test:ui&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;# Run tests with Vitest UI&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;db:studio&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# Open Drizzle Studio for database inspection&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;db:push&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;# Push schema changes to database&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;db:generate&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="c1"&gt;# Generate Drizzle migrations&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;db:reset&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="c1"&gt;# Reset database (removes SQLite DB + screenshots/baselines)&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;db:seed&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;# Seed test data&lt;/span&gt;
pnpm&lt;span class="w"&gt; &lt;/span&gt;test:visual&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="c1"&gt;# Run visual tests via CLI&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Fási</dc:creator><pubDate>Wed, 06 May 2026 09:06:49 -0000</pubDate><guid>https://sourceforge.net8b7e4f07b99ba78702beb8fbd55bcea5fc98b1bb</guid></item></channel></rss>