2025-07-30

Github Actions matrix + Pytest mark 多節點同步執行 case

隨著自動化測試的 case 越來越多,總有一天會遇到該來平行跑測試這件事。

根據使用的框架、CI/CD 工具不同,實作方式也會有所差異。這邊紀錄一下我之前用 pytest mark 搭配 GitHub Actions 做平行執行的做法。

pytest 的 mark 拿來執行一系列 case 很方便,所以放在 Github Actions 時,決定以 matrix 同時開多個同 mark 名稱的節點來執行,類似下面這樣:
strategy:
  matrix:
    mark: ['node_serviceA', 'node_serviceB', 'node_serviceC']
  fail-fast: false
記得把 fail-fast 設成 false,不然只要有一個節點先執行完,matrix 裡所有節點都會一起終止。

在後續執行的部分,就像這樣使用:
run: pytest -m ${{ matrix.mark }}

而在case裡,case function 或 class 就加上想要在哪個 node 執行,如:

@pytest.mark.node_serviceA
def test_api_service_a():
#...

Github Actions 的收費會看執行時間,執行時間在 matrix 就是看所有節點各別都花了多少時間(等於同時多開n台),所以費用和原先不會有差異。

2025-07-27

Devlog 離職遺照產生器 v1.0

分享在FB之後,最多的回饋就是需要RWD。也是啦,這個時代哪有人還在用電腦版網站呢(淚

於是快速的加上了簡單的 RWD~目前長這樣(標題也偷改了):


把背景小故事收到了「這是啥?」裡面,點開來之後,點「不要幹話」可以收合!



另外加入了照片滿版、裝飾置中的功能~

照片滿版 demo

(圖片為 ChatGPT 生成的「我」,不過與實物不能說一模一樣,只能說毫無關聯):


裝飾置中 demo



雖然說手機版的圖片編輯,應該要加上適合手機的手勢操作(雙指捏合縮放、旋轉等),但因為如果要加上手勢操作會需要整個大改寫,所以暫時還沒加。

還有收集到其他需求,像是直接轉成黑白照片、自己輸入文字等,之後有空再更新~

-

上面都是使用者回報的部分,直到我多加了一些圖片之後,才發現了一個超級嚴重的問題⋯⋯

完全忘記圖片要壓縮,有些圖片大小甚至有 1MB 之多⋯⋯我都在家裡超快的網路上測試,完全忽略了圖片出來超慢,而且有點耗使用者的網路流量QQ

於是修正了用 webp 讓圖片都降到 100KB 以下,加入 prefetch catch。

-

另外調整了一下裝飾品的順序,一開始是加入的先後順序,後來是只要點擊選中的裝飾品就要到最上面,感覺更直覺一點。

-

最後總結一下學到的、印象深刻的東西:

  • 圖片要壓縮
  • 承上,測試的時候記得用 F12 network throttling 注意一下不同網路狀況,應該能及早發現

2025-07-24

Devlog 離職照片產生器 v0.1

最近有一些奇妙的體悟,讓我好像比較有動力做一些不同的東西。

一是覺得 vibe coding 做一些小東西真的很有趣、很方便,大幅節省了原本沒有 AI 前,完全不熟某種開發時,要稍微搜尋,大致知道用什麼工具比較適合、選了可能還要寫出一部份試試的時間。似乎可以把以前想做,但一直用「沒時間」當藉口的東西都做出來了。另外 AI 也省掉很多原本工作上的苦工,有時間做一些真正重要的事之外,還有時間想一些工作之外好玩的東西。

二是最近剛好受到了滿多類似的鼓勵,大意是「一個軟體的生命是在上線後,有人使用才開始」,以前覺得有點雞湯,但後來覺得也是事實。以前覺得自己工作之外做的東西不管是主題(可能我感興趣的東西太怪)還是介面之類的都很鳥⋯⋯實在不敢拿出來,但是現在想想,我不過就只是要做一個自己覺得有趣的東西,根本不用先想這麼多。

先求有再求好。紀錄各種過程,一定是很有趣而且很有收穫的一件事。

-

前幾天 FB 回顧我上一份工作離職的紀念貼文。當時我把 slack 頭像換成像是遺照的樣子,同事問我這是哪裡來的產生器。於是我當時想說來做個產生器好了!一等就是一年——直到現在終於想起來,然後速速做了0.1版~

-

請看這精(ㄐㄧㄢˇ)美(ㄌㄡˋ)的介面:



對不起我沒有前端的天賦,不過人生還很長,以後會慢慢改善。

不要看它醜,該有的東西都有(因為用了fabric.js,人家都寫好惹),請看 demo:

上傳照片的部分這裡先跳過,如上圖,可以選擇位置固定的緞帶,還有多個可以任意擺放、縮放、選轉的裝飾品。
滿意之後,可以下載編輯完成的照片~

-

做到目前這樣,在電腦上看算是功能都有出來,堪用(寬鬆標準)。
但是在手機上沒有RWD,而且對於物品的操作會感覺很不直覺,之後還有很多可以改善的空間。

-

最後總結一下學到的、有印象的東西:
  • 回憶起在 local file:// 測試會遇到 CROS error。因為平常寫 python,所以在目錄下 python -m http.server 8000 就可以。
  • 當時花了比較多時間調整照片和新增上面的緞帶、裝飾品時怎麼樣會比較直覺一點。比方最基本的,一新增裝飾品,裝飾品應該就要被選中。原本用了send to front 之類的方式,但其實沒有用,其實被選中就會出現在最上方了。
  • 因為照片容易不小心點到就跑上來,所以我新增了一個「照片到最下面」的按鈕。目前完全是以能最快開發完來設計😂覺得這樣子的過程也很有趣,可以體會到為什麼有些趕鴨子上架的產品,在缺少規格時有很多突兀的設計。
  • 下載的部分,發現手機的網頁上 link.click() 是無效的,所以後來是開新分頁顯示圖片,讓使用者長按圖片存檔。忽然知道為什麼手機小測驗存圖片都是長按儲存,自己做過才知道😂
之後有更新再紀錄~