retro-robots-vector-hires-1184x592
ในการทดสอบระบบ Web application ด้วย Robot framework
หนึ่งในปัญหาและสิ่งที่ต้องทำซ้ำ ๆ เสมอคือ

  • การติดตั้ง python
  • การติดตั้ง library ต่าง ๆ เช่น robot framework และ selenium2library ผ่าน pip

ยังไม่พอนะ ยิ่งนำการทดสอบไปทำงานร่วมกับระบบ Continuous Integration ด้วยแล้ว
ก็ยิ่งลำบากในการติดตั้งอีก เช่น

  • การ configuration
  • การทดสอบแบบ Headless ผ่าน Xvfb virtual display

ซึ่งทั้งหมดนี้ทำบ่อยจนน่าจะเบื่อแล้ว
ดังนั้นมาลองทำ image ด้วย Docker ไว้ใช้กันดีกว่า

เริ่มต้นด้วยสิ่งที่ต้องการประกอบไปด้วย

  • ระบบปฏิบัติการใช้ Alpine เพราะว่าเล็กดี
  • ติดตั้ง python และ pip
  • ติดตั้ง robot framework
  • ติดตั้ง selenium2library สำหรับทดสอบระบบ web application
  • ติดตั้ง firefox และ google chrome รวมทั้ง chrome driver
  • ติดตั้ง Xvfb virtual display

ดังนั้นจึงสร้าง Dockerfile ไว้ดังนี้

โดยก่อนที่จะทำการสร้าง container มาใช้งานนั้น

ต้องทำการกำหนดค่าต่าง ๆ เหล่านี้ก่อน

  • กำหนดค่าต่าง ๆ สำหรับ Xvfb เช่น ความละเอียดของหน้าจอ
  • ทำการ start Xvfb
  • ทำการ run ชุดการทดสอบ ซึ่งอยู่นอก container ดังนั้นจึงต้องส่งเข้ามาเอง
  • หยุดการทำงานของ Xvfb

สามารถเขียน shell script ได้ดังนี้

เมื่อทุกอย่างเรียบร้อยก็ทำการสร้าง image ด้วยคำสั่ง

docker build -t docker-robot-framework .

จากนั้นทำการ run container เพื่อทดสอบระบบงานด้วย robot framework

โดยชุดการทดสอบตัวอย่าง
จะอยู่ใน folder ชื่อว่า robots ซึ่งอยู่นอก container
ดังนั้นจึงต้องกำหนด volume เข้าไปด้วยเสมอ
ใช้งานด้วยคำสั่ง

docker run --rm \
-e ROBOT_TESTS=/robots/ \
-e BROWSER=firefox \
-v $(pwd)/robots:/robots \
-ti docker-robot-framework

ผลการทำงานเป็นดังนี้

result-robot-01

เพียงเท่านี้ก็สามารถนำไปใช้งานแบบสบาย ๆ แล้วครับ
ตัวอย่างของ Dockerfile อยู่ที่ Github::Robot Alpine Docker

ปล. ยังมีปัญหากับ google chrome นะ