35
國會大代誌 - 完善議案追蹤之二 提案人:廉強

G0V SOC - 2

Embed Size (px)

Citation preview

Page 1: G0V SOC - 2

國會大代誌 - 完善議案追蹤之二

提案人:廉強

Page 2: G0V SOC - 2

● 國會大代誌:

– 開發議案頁面 + 撰寫測試

– 調整熱門議案頁面

● Api.ly :使用 Dredd 做單元測試

Page 3: G0V SOC - 2

開發議案頁面

Page 4: G0V SOC - 2

將 ETBlue 做的 mockup

變成

可以動的網頁

Page 5: G0V SOC - 2

ETBlue 做的 mockup

Page 6: G0V SOC - 2

變成 ...

Page 7: G0V SOC - 2

先挑選會期

Page 8: G0V SOC - 2

再更改搜尋條件

有日期、委員會、會議、提案類型可選

Page 9: G0V SOC - 2

搜尋邏輯

選不同的年份,月、日、委員會、會議會不同

選不同的月份,日、委員會、會議會不同

選不同的日期,委員會、會議會不同

選不同的委員會,年、月、日、會議會不同

Page 10: G0V SOC - 2

提案 - 修法

右上角是目前的進度

如果第一次修法,會出現「 NEW 」

Page 11: G0V SOC - 2

提案 - 預算

右上角僅顯示「已提案」

Page 12: G0V SOC - 2

提案 - 查照

右上角僅顯示「已提案」

Page 13: G0V SOC - 2

提案 - 其他

若不屬於上述三者,則為其他

若還沒載入完成、右上角會顯示「載入中 ... 」

Page 14: G0V SOC - 2

分享連結

輕輕點一下「複製網址」的按鈕即可

若瀏覽器不支援 flash ,可以按 Ctrl+C 複製

Page 15: G0V SOC - 2

替議案頁面撰寫測試

Page 16: G0V SOC - 2

名詞解釋

● Cassettes :單元測試的輸入

● Snapshots :單元測試的預期輸出

Page 17: G0V SOC - 2

Cassettes 的問題

Page 18: G0V SOC - 2

cassettes 都要手動用瀏覽器 copy 下來

當頁面發的 request 一多,這就變成困擾

Page 19: G0V SOC - 2

「如果我每天要重複按照順序按 100 個不同的按

鈕,為什麼不寫個程式自動按這 100 個按鈕?」

– vgod

Page 20: G0V SOC - 2

所以我寫了一個腳本

可以自動把測試需要的 cassettes 下載下來

Page 21: G0V SOC - 2

按照慣例

test/unit/*.spec.ls

下載 cassettes 的腳本就會在

test/unit/recorder/*.ls

Page 22: G0V SOC - 2

執行結果

Page 23: G0V SOC - 2

Snapshots 的問題

Page 24: G0V SOC - 2

大家都知道

瀏覽器的 js 不能存檔到硬碟上

Page 25: G0V SOC - 2

所以我只能把 snapshots 輸出到螢幕上

然後再 copy 下來存檔

... 為甚麼不能讓程式幫我存檔呢?

Page 26: G0V SOC - 2

示意圖

Page 27: G0V SOC - 2

● 開啟 server

● 執行單元測試

– Browser 會發 ajax 給 server

– Server 將接收到的 snapshots 存檔

使用方式

Page 28: G0V SOC - 2

議案頁面的測試完成後

測試覆蓋率上升至 36 %

Page 29: G0V SOC - 2

調整熱門議案頁面

Page 30: G0V SOC - 2

新增瀏覽人次

Page 31: G0V SOC - 2

使用 Dredd 做單元測試

Page 32: G0V SOC - 2
Page 33: G0V SOC - 2

用 docker 把 Dredd 包起來

Page 34: G0V SOC - 2

用 Dredd 跑單元測試

Page 35: G0V SOC - 2

感謝大家聆聽