baseUrl . '/');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, true);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        $this->assertEquals(200, $httpCode, 'Homepage should load successfully');
        $this->assertStringContainsString('
', $response, 'Homepage should have a title');
    }
    
    public function testHealthEndpointReturnsOk()
    {
        $ch = curl_init($this->baseUrl . '/health');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        $this->assertEquals(200, $httpCode, 'Health endpoint should return 200 OK');
        
        $data = json_decode($response, true);
        $this->assertArrayHasKey('status', $data, 'Health response should have status field');
        $this->assertEquals('ok', $data['status'], 'Health status should be ok');
    }
    
    public function testPositionsEndpointReturnsJson()
    {
        $ch = curl_init($this->baseUrl . '/positions');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        $this->assertEquals(200, $httpCode, 'Positions endpoint should return 200 OK');
        
        $data = json_decode($response, true);
        $this->assertArrayHasKey('positions', $data, 'Positions response should have positions field');
        $this->assertIsArray($data['positions'], 'Positions should be an array');
    }
}