Skip to content

Instantly share code, notes, and snippets.

@argaghulamahmad
Last active October 31, 2018 14:16
Show Gist options
  • Save argaghulamahmad/57f76449b9249adf1218188ec72ddeaa to your computer and use it in GitHub Desktop.
Save argaghulamahmad/57f76449b9249adf1218188ec72ddeaa to your computer and use it in GitHub Desktop.
func & unit test gitlab yml config
stages:
- test
- deploy
UnitTest:
image: python:3.6
stage: test
before_script:
- wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
- echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list
- pip install -r requirements.txt
- python manage.py makemigrations
- python manage.py migrate
- apt-get update -qq && apt-get install -y -qq unzip
- apt-get install -y google-chrome-stable
- apt-get install -y xvfb
- wget https://chromedriver.storage.googleapis.com/2.43/chromedriver_linux64.zip
- unzip chromedriver_linux64.zip
- python manage.py collectstatic --no-input
- python manage.py runserver 8000 &
when: on_success
script:
- coverage run --include='*' manage.py test
- coverage report -m
Deployment:
image: ruby:2.4
stage: deploy
before_script:
- gem install dpl
- wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh
script:
- dpl --provider=heroku --app=$HEROKU_APPNAME --api-key=$HEROKU_APIKEY
- export HEROKU_API_KEY=$HEROKU_APIKEY
- heroku run --app $HEROKU_APPNAME migrate
environment:
name: production
url: $HEROKU_APP_HOST
def setUp(self):
chrome_options = Options()
chrome_options.add_argument('--dns-prefetch-disable')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('disable-gpu')
service_log_path = "./chromedriver.log"
service_args = ['--verbose']
self.selenium = webdriver.Chrome('./chromedriver', chrome_options=chrome_options)
self.selenium.implicitly_wait(25)
super(Story6FunctionalTest,self).setUp()
@argaghulamahmad
Copy link
Author

argaghulamahmad commented Oct 30, 2018

jika pada saat
- unzip chromedriver_linux64.zip
output nya error karena ask to remove chromedriver, tambahin dibawahnya
- rm chromedriver

@Diptags
Copy link

Diptags commented Oct 30, 2018

jika pada saat

  • unzip chromedriver_linux64.zip
    output nya error karena ask to remove chromedriver, tambahin dibawahnya
  • rm chromedriver

Selamat sore kak.
Saya ingin tahu, itu file tests.py yang mana yang perlu dimodifikasi ? apakah file tests.py yang berada satu folder dengan app Story6 ?
Karena apabila satu folder dengan Story6, sepertinya ada sesuatu yang kurang saat melakukan import, sehingga memunculkan Options is not defined

@argaghulamahmad
Copy link
Author

yang satu folder app bro

@argaghulamahmad
Copy link
Author

bagi kalian yang mengalami ./chromedriver unexpectedly exited, tambahin kode di bawah ini, setelah baris ke 16 .gitlab-ci.yml

  • apt-get install -y libglib2.0-0=2.50.3-2 libnss3=2:3.26.2-1.1+deb9u1 libgconf-2-4=3.2.6-4+b1 libfontconfig1=2.11.0-6.7+b1

@laymonage
Copy link

laymonage commented Oct 31, 2018

Sebenarnya seperti ini saja sudah cukup:
https://gist.github.com/laymonage/d6eba112de17645f194b3fea0ed72255

Bahkan bagian runserver bisa dihapus kalau kita menggunakan LiveServerTestCase (atau StaticLiveServerTestCase), dan menggunakan self.live_server_url untuk mendapatkan root url dari server-nya (karena port yang digunakan default-nya berubah-ubah dan bukan 8000, contoh: self.selenium.get(self.live_server_url + "/status/").

Cara ini justru yang direkomendasikan (best practice) untuk functional test, karena server yang dijalankan tidak akan menggunakan database dari local server yang biasa kita pakai di development.

@laymonage
Copy link

@argaghulamahmad
Copy link
Author

mantap, terima kasih atas @laymonage

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment