Merge dev: Node.js scraper migration + CI fix (#32)
All checks were successful
CI/CD Pipeline - Apartment API / Scan Dependencies (push) Successful in 13s
CI/CD Pipeline - Apartment API / Lint & Test (push) Successful in 44s
CI/CD Pipeline - Apartment API / Send Webhook Notification (push) Successful in 2s
CI/CD Pipeline - Apartment API / Build & Push Image (push) Successful in 1m41s
CI/CD Pipeline - Apartment API / Deploy to Production (push) Successful in 14s
All checks were successful
CI/CD Pipeline - Apartment API / Scan Dependencies (push) Successful in 13s
CI/CD Pipeline - Apartment API / Lint & Test (push) Successful in 44s
CI/CD Pipeline - Apartment API / Send Webhook Notification (push) Successful in 2s
CI/CD Pipeline - Apartment API / Build & Push Image (push) Successful in 1m41s
CI/CD Pipeline - Apartment API / Deploy to Production (push) Successful in 14s
Co-authored-by: Stephen Minakian <stephenminakian@gmail.com> Co-committed-by: Stephen Minakian <stephenminakian@gmail.com>
This commit is contained in:
288
__tests__/scraper/fixtures/sample-listing.html
Normal file
288
__tests__/scraper/fixtures/sample-listing.html
Normal file
@ -0,0 +1,288 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>Country Club Towers - Apartments</title></head>
|
||||
<body>
|
||||
<section class="spaces__tab-unit">
|
||||
<article
|
||||
class="spaces-unit price_3500plus floor_2755 spaces-community-country-club-towers 2bed 2bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154842"
|
||||
data-spaces-soonest="2025-10-11"
|
||||
data-spaces-sort-date="1760140800"
|
||||
data-spaces-sort-price="5230"
|
||||
data-spaces-sort-area="1210"
|
||||
data-spaces-sort-bed="2"
|
||||
data-spaces-unit="W2707"
|
||||
data-spaces-unit-id="154842"
|
||||
data-spaces-unit-floor="2755"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="10270"
|
||||
data-spaces-sort-plan-name="Pyramid Peak - Terrace"
|
||||
data-spaces-sort-bath="2"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154842"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154842"
|
||||
aria-label="Unit W2707">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">5230</span>
|
||||
<span class="spaces-unit__unit">W2707</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_2500-3000 floor_2738 spaces-community-country-club-towers 1bed 1bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154451"
|
||||
data-spaces-soonest="2026-03-08"
|
||||
data-spaces-sort-date="1772928000"
|
||||
data-spaces-sort-price="2767"
|
||||
data-spaces-sort-area="806"
|
||||
data-spaces-sort-bed="1"
|
||||
data-spaces-unit="E0901"
|
||||
data-spaces-unit-id="154451"
|
||||
data-spaces-unit-floor="2738"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8016"
|
||||
data-spaces-sort-plan-name="Sunshine Peak"
|
||||
data-spaces-sort-bath="1"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154451"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154451"
|
||||
aria-label="Unit E0901">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">2767</span>
|
||||
<span class="spaces-unit__unit">E0901</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_2000-2500 floor_2754 spaces-community-country-club-towers 0bed 1bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154814"
|
||||
data-spaces-soonest="2025-12-18"
|
||||
data-spaces-sort-date="1766016000"
|
||||
data-spaces-sort-price="2255"
|
||||
data-spaces-sort-area="623"
|
||||
data-spaces-sort-bed="0"
|
||||
data-spaces-unit="W2603"
|
||||
data-spaces-unit-id="154814"
|
||||
data-spaces-unit-floor="2754"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8018"
|
||||
data-spaces-sort-plan-name="Little Bear Peak"
|
||||
data-spaces-sort-bath="1"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154814"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154814"
|
||||
aria-label="Unit W2603">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">2255</span>
|
||||
<span class="spaces-unit__unit">W2603</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_3500plus floor_2737 spaces-community-country-club-towers 2bed 2bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154428"
|
||||
data-spaces-soonest="2026-02-22"
|
||||
data-spaces-sort-date="1771718400"
|
||||
data-spaces-sort-price="4250"
|
||||
data-spaces-sort-area="1152"
|
||||
data-spaces-sort-bed="2"
|
||||
data-spaces-unit="W0802"
|
||||
data-spaces-unit-id="154428"
|
||||
data-spaces-unit-floor="2737"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8017"
|
||||
data-spaces-sort-plan-name="Mt. Princeton"
|
||||
data-spaces-sort-bath="2"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154428"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154428"
|
||||
aria-label="Unit W0802">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">4250</span>
|
||||
<span class="spaces-unit__unit">W0802</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_2000-2500 floor_2752 spaces-community-country-club-towers 1bed 1bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154778"
|
||||
data-spaces-soonest="2025-12-31"
|
||||
data-spaces-sort-date="1767139200"
|
||||
data-spaces-sort-price="2495"
|
||||
data-spaces-sort-area="764"
|
||||
data-spaces-sort-bed="1"
|
||||
data-spaces-unit="W2405"
|
||||
data-spaces-unit-id="154778"
|
||||
data-spaces-unit-floor="2752"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8020"
|
||||
data-spaces-sort-plan-name="Grays Peak"
|
||||
data-spaces-sort-bath="1"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154778"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154778"
|
||||
aria-label="Unit W2405">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">2495</span>
|
||||
<span class="spaces-unit__unit">W2405</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_2000-2500 floor_2737 spaces-community-country-club-towers 1bed 1bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154442"
|
||||
data-spaces-soonest="2025-02-01"
|
||||
data-spaces-sort-date="1738368000"
|
||||
data-spaces-sort-price="2495"
|
||||
data-spaces-sort-area="802"
|
||||
data-spaces-sort-bed="1"
|
||||
data-spaces-unit="W0809"
|
||||
data-spaces-unit-id="154442"
|
||||
data-spaces-unit-floor="2737"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8022"
|
||||
data-spaces-sort-plan-name="Pikes Peak"
|
||||
data-spaces-sort-bath="1"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154442"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154442"
|
||||
aria-label="Unit W0809">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">2495</span>
|
||||
<span class="spaces-unit__unit">W0809</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_2000-2500 floor_2751 spaces-community-country-club-towers 1bed 1bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154764"
|
||||
data-spaces-soonest="2026-02-17"
|
||||
data-spaces-sort-date="1771286400"
|
||||
data-spaces-sort-price="2435"
|
||||
data-spaces-sort-area="715"
|
||||
data-spaces-sort-bed="1"
|
||||
data-spaces-unit="W2308"
|
||||
data-spaces-unit-id="154764"
|
||||
data-spaces-unit-floor="2751"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8023"
|
||||
data-spaces-sort-plan-name="Longs Peak"
|
||||
data-spaces-sort-bath="1"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154764"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154764"
|
||||
aria-label="Unit W2308">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">2435</span>
|
||||
<span class="spaces-unit__unit">W2308</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_2500-3000 floor_2744 spaces-community-country-club-towers 1bed 1bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154612"
|
||||
data-spaces-soonest="2026-03-24"
|
||||
data-spaces-sort-date="1774310400"
|
||||
data-spaces-sort-price="2683"
|
||||
data-spaces-sort-area="797"
|
||||
data-spaces-sort-bed="1"
|
||||
data-spaces-unit="W1610"
|
||||
data-spaces-unit-id="154612"
|
||||
data-spaces-unit-floor="2744"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8024"
|
||||
data-spaces-sort-plan-name="Torreys Peak"
|
||||
data-spaces-sort-bath="1"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154612"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154612"
|
||||
aria-label="Unit W1610">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">2683</span>
|
||||
<span class="spaces-unit__unit">W1610</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_3500plus floor_2739 spaces-community-country-club-towers 2bed 2bath spaces-market-country-club-towers-gardens"
|
||||
data-spaces-id="154495"
|
||||
data-spaces-soonest="2025-11-07"
|
||||
data-spaces-sort-date="1762473600"
|
||||
data-spaces-sort-price="4470"
|
||||
data-spaces-sort-area="1230"
|
||||
data-spaces-sort-bed="2"
|
||||
data-spaces-unit="E1011"
|
||||
data-spaces-unit-id="154495"
|
||||
data-spaces-unit-floor="2739"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8025"
|
||||
data-spaces-sort-plan-name="Maroon Peak"
|
||||
data-spaces-sort-bath="2"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154495"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154495"
|
||||
aria-label="Unit E1011">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">4470</span>
|
||||
<span class="spaces-unit__unit">E1011</span>
|
||||
</div>
|
||||
</article>
|
||||
<article
|
||||
class="spaces-unit price_3500plus floor_2760 spaces-community-country-club-towers 2bed 2.5bath has_tour spaces-market-country-club-towers-gardens penthouse"
|
||||
data-spaces-id="154919"
|
||||
data-spaces-soonest="2025-10-27"
|
||||
data-spaces-sort-date="1761523200"
|
||||
data-spaces-sort-price="8581"
|
||||
data-spaces-sort-area="1532"
|
||||
data-spaces-sort-bed="2"
|
||||
data-spaces-unit="E3205"
|
||||
data-spaces-unit-id="154919"
|
||||
data-spaces-unit-floor="2760"
|
||||
data-spaces-obj="unit"
|
||||
data-spaces-unavailable="false"
|
||||
data-spaces-available="true"
|
||||
data-spaces-community="Country Club Towers"
|
||||
data-spaces-asset="420"
|
||||
data-spaces-specials-content=""
|
||||
data-spaces-plan-id="8037"
|
||||
data-spaces-sort-plan-name="Mt. Antero"
|
||||
data-spaces-sort-bath="2.5"
|
||||
data-spaces-href="?spaces_tab=unit-detail&detail=154919"
|
||||
data-spaces-inventory-href="?spaces_tab=unit-detail&detail=154919"
|
||||
aria-label="Unit E3205">
|
||||
<div class="spaces-unit__inner">
|
||||
<span class="spaces-unit__price">8581</span>
|
||||
<span class="spaces-unit__unit">E3205</span>
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user