All Posts

All Posts

448편
  • 발행일

    실패한 e2e 25건 중 진짜 회귀는 1건

    Playwright 전체 스위트가 235 통과 · 25 실패 · 11 skip인 채로 한동안 있었습니다. 25건을 하나씩 열어 갈라 보니 코드 회귀 1 · 데이터 없음 4 · 나머지는 화면과 데이터를 못 따라간 낡은 스펙이었어요. 빨간불이 오래 쌓이면 진짜 회귀가 그 안에 묻힙니다. 같은 날 선택자가 사라져 영영 건너뛰던 스펙, 저장한 뒤에 건너뛰어 데이터를 남기던 스펙도 함께 고쳐, 다시 돌린 274건이 실패 0으로 끝났습니다.

  • 발행일

    tojson을 백틱으로 감싸면 안 되는 이유

    데이터 통계 화면의 워드클라우드 세 탭이 전부 빈 채로 떴습니다. 서버가 내려준 JSON을 템플릿 리터럴 안에 넣고 JSON.parse로 다시 읽고 있었는데, 값에 든 줄바꿈을 리터럴이 먼저 실제 줄바꿈으로 바꿔 parse가 죽고 렌더 함수 전체가 멈춘 거였어요. tojson은 그 자체로 JS 리터럴이라 그냥 놓으면 됩니다.

  • 발행일

    경로 부분 문자열로 메뉴 활성을 판정하면 생기는 일

    관리자 사이드바의 신청·심사 메뉴가 열흘 동안 세 자리를 옮겨 다녔습니다. 도메인별 그룹(제가) → 신청/심사 한 그룹(팀원) → 다시 도메인별 그룹(제가). 옮길 때마다 걸린 건 그룹 이름이 아니라 활성 메뉴 판정이었어요. 판정이 "현재 경로에 이 문자열이 들어 있나"여서, 상위 경로를 가진 메뉴가 하위 화면까지 삼켜 두 그룹이 같이 켜졌습니다. 이 글은 그 판정 위에서 메뉴를 옮기는 비용과, 세 번 바뀐 하위 메뉴 이름 규칙에 대한 기록입니다. 9월 2일 작업을 10월 말 이름 정리까지 묶어 정리했습니다.

  • 발행일

    get_object를 덮으면 404 처리도 같이 사라진다

    관리자 상세·수정 화면 여덟 개가 없는 pk를 받으면 500을 냈습니다. 쿼리를 미리 로드하려고 get_object()를 덮으면서 404 처리 없이 .get(pk=)를 직접 불렀거든요. 덮어야 했던 건 "무엇을 가져오나"가 아니라 "어떤 쿼리셋에서 가져오나"였습니다. 여덟 뷰를 get_queryset()으로 옮기니 78줄이 26줄이 됐고, 제네릭 뷰가 원래 하던 404 처리가 돌아왔습니다. 같은 함정이 남은 화면 네 곳은 아직 그대로입니다.