-
Build the binary:
cargo build --bin airbnb 2>&1 | tail -5
-
Run --help and verify all 18 subcommands are listed:
./target/debug/airbnb --help
Expected commands (count: 18):
search, listing, reviews, calendar, host, neighborhood, occupancy, compare, price-trends, gap-finder, revenue, listing-score, amenities, market-comparison, host-portfolio, review-sentiment, competitive, optimal-pricing.
-
Try a search (real HTTP, uses the scraper's rate limit of 1 req / 2s —
this will hit Airbnb, so only run it ad-hoc, not in CI):
./target/debug/airbnb search "Paris, France" --adults 2 --max-price 200 2>&1 | head -20
Expected: human-readable output starting with Found N listings and
listing at least one property. If it fails with a Cloudflare-style
error, the scraper or API key cache is stale — see
claude-resources/rules/scraping-conventions.md § API key rotation.
-
JSON mode on a listing detail:
./target/debug/airbnb --json listing 12345678 2>&1 | tail -30
Pipe through jq . if available to verify valid JSON. The response
should have id, name, location, amenities keys.
-
A multi-fetch analytical command (exercises
application::analytical_handlers):
./target/debug/airbnb --json optimal-pricing 12345678 --months 6 2>&1 | tail -40
Expected JSON with listing_id, recommended_price, reasoning keys.
-
Report which steps passed and which failed. If step 3/4/5 fail due
to network issues (not compile/parse issues), report them as "network"
rather than "broken" — the CLI is working, Airbnb isn't reachable.