{"id":21201786,"url":"https://github.com/dianpermana/end2end-validate-website-blocked","last_synced_at":"2026-05-22T14:16:59.888Z","repository":{"id":262228134,"uuid":"886599287","full_name":"DianPermana/End2End-Validate-Website-blocked","owner":"DianPermana","description":"https://www.komdigi.go.id/berita/pengumuman/detail/daftar-20-situs-mmm-yang-diblokir-kominfo","archived":false,"fork":false,"pushed_at":"2024-11-11T09:20:07.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T14:47:47.113Z","etag":null,"topics":["datascience","endtoendtesting","ilmiah","judi-slot","judionline","kominfoblock","matplotlib","selenium"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DianPermana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-11T09:11:29.000Z","updated_at":"2024-11-11T09:20:10.000Z","dependencies_parsed_at":"2024-11-11T10:24:31.268Z","dependency_job_id":"1edb78ef-389b-489c-ab76-eaf081371879","html_url":"https://github.com/DianPermana/End2End-Validate-Website-blocked","commit_stats":null,"previous_names":["dianpermana/end2end-validate-website-blocked"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DianPermana%2FEnd2End-Validate-Website-blocked","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DianPermana%2FEnd2End-Validate-Website-blocked/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DianPermana%2FEnd2End-Validate-Website-blocked/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DianPermana%2FEnd2End-Validate-Website-blocked/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DianPermana","download_url":"https://codeload.github.com/DianPermana/End2End-Validate-Website-blocked/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243654417,"owners_count":20325898,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datascience","endtoendtesting","ilmiah","judi-slot","judionline","kominfoblock","matplotlib","selenium"],"created_at":"2024-11-20T20:11:08.239Z","updated_at":"2026-05-22T14:16:59.836Z","avatar_url":"https://github.com/DianPermana.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Evidence Video\n\nhttps://github.com/user-attachments/assets/efaa671b-8a5d-4c6a-a1cd-fcbe46e13afb\n\n\n### Daftar 20 Situs MMM yang Diblokir Kominfo, Really ??? \n\nurl : https://www.komdigi.go.id/berita/pengumuman/detail/daftar-20-situs-mmm-yang-diblokir-kominfo\n\n\n```python\nimport time\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom selenium import webdriver\nfrom selenium.webdriver.common.by import By\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.support import expected_conditions as EC\nfrom selenium.common.exceptions import TimeoutException, WebDriverException\nfrom concurrent.futures import ThreadPoolExecutor\n```\n\n### Initialization process\n    1. Created result dictionary\n    2. Created chrome webdriver\n    3. Created assertion using title page\n\n\n```python\ndef check_website_access(url, expected_result, assert_title=None):\n    \n    # Initialize the result dictionary\n    result = {\n        \"url\": url,\n        \"expected_result\": expected_result,\n        \"actual_result\": \"fail\",  # Default to fail if something goes wrong\n        \"timestamp\": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),  # Will hold the timestamp\n        \"actual_title\": None  # Will hold the actual title of the page\n    }\n\n    # Set up the Chrome WebDriver\n    driver = webdriver.Chrome()\n\n    try:\n        driver.get(url)\n\n        # Capture the actual title of the page\n        result[\"actual_title\"] = driver.title\n        \n        # Assert the page title if specified\n        if assert_title:\n            try:\n                WebDriverWait(driver, 10).until(\n                    EC.title_is(assert_title)  # Assert that the page title matches the expected title\n                )\n                result[\"actual_result\"] = \"success\"  # Title matches the assertion\n            except TimeoutException:\n                result[\"actual_result\"] = \"fail\"  # Title did not match within the timeout period\n        else:\n            result[\"actual_result\"] = \"success\"  # If no title to assert, assume the page loaded successfully\n\n    except WebDriverException:\n        result[\"actual_result\"] = \"fail\"  # If the URL failed to load\n    finally:\n        time.sleep(5)  # Optional sleep time to ensure everything is processed\n        driver.quit()  # Close the browser after the check\n\n    return result\n```\n\n### Example data : URL, Expected Results and Assert tittle\n\n    1. url : adalah singkatan dari Uniform Resource Locator, yaitu alamat unik yang digunakan untuk mengidentifikasi dan mengakses sumber daya di internet\n    2. expected_results : menunjukkan bagaimana seharusnya website (dapat di akses = success, dan tidak dapat diakses = failed )\n    3. assert_title : hal paling mudah untuk memastikan bahwa web bisa diakses tentu dengan melihat langsung web nya melalui browser, namun secara teknikal automation kita bisa menggunakan dengan membuat ekspektasi tittle page yang ada pada web tepat setelah muncul ke permukaan, proses ini yang kita manfaatkan untuk melakukan validasi. bahwa optional bisa jadi, tetapi ini hal yang paling basic dapat dilakukan untuk proses validasinya.\n\n\n```python\n# Scenario Outline (Test Cases)\ntest_data = [\n    {\"url\": \"https://www.Indonesia-mmm_net.com\", \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmindonesialegal.com\", \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.klikmmm.com\",           \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.websupportmmm.com\",     \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.bisnismavro.com\",       \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmindonesiaclub.com\",  \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmindonesian.com\",     \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.bisnis3m.com\",          \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmindonesia1.com\",     \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmlovers.com\",         \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmindo.com\",           \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.lk.sergeymavrodi.com\",  \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.lk.sergey-mavrodi-mmm.org\",\"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmcommunity.net\",      \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmindonesia9.com\",     \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmm-dotinfo.com\",       \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.mmmincome.com\",         \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.2012.sergey-mavrodi.ms\",\"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"https://www.2012.sergey-mavrodi-mmm.net\",\"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"},\n    {\"url\": \"2012.sergeymavrodi.com\",             \"expected_result\": \"fail\", \"assert_title\": \"The Arabic word ḥarām (حَرَام)\"}\n\t\n\t]\n```\n\n### Running the tests concurrently using ThreadPoolExecutor\n    1. Solusi dari jumlah list website yang di blokir sangat banyak tentu akan memperlambat bagaimana proses pengecekan satu per satu, disini kita mencoba mengimplementasikan parallel execution dengan ThreadPoolExecutor, karena pakai pytest-xdist masih gagal \n\n\n```python\n\nwith ThreadPoolExecutor(max_workers=20) as executor:\n    results = list(\n        executor.map(\n            lambda data: check_website_access(\n                data[\"url\"], \n                data[\"expected_result\"], \n                data.get(\"assert_title\", None)  # Default to None if \"assert_title\" is missing\n            ), \n            test_data\n        )\n    )\n```\n\n### Convert the results to a DataFrame for better display\n    1. Get results test\n    2. Plot data sukses dan faild menggunakan grapik bar chart\n    3. lakukan analisa \n\n\n```python\ndf_results = pd.DataFrame(results)\n\n# Plotting the results (Success vs Fail)\nsuccess_count = df_results[df_results[\"actual_result\"] == \"success\"].shape[0]\nfail_count = df_results[df_results[\"actual_result\"] == \"fail\"].shape[0]\n\n# Plotting a bar chart\nplt.figure(figsize=(8, 4))\nplt.bar(['Success', 'Fail'], [success_count, fail_count], color=['green', 'red'])\nplt.title(\"Website Access Test Results\")\nplt.xlabel(\"Result\")\nplt.ylabel(\"Count\")\nplt.show()\n\n```\n\n\n    \n![png](output_9_0.png)\n    \n\n\n### Display the results as a table (including timestamp and actual title)\n\nPerhatikan matrix pada table berikut\n\n    1. timestamp : memberikan informasi tanggal dan jam berapa website tersebut coba diakses\n    2. actual results : fail, menunjukkan 20 website tersebut gagal diakses\n    3. actual title : menunjukkan title apa yang terbaca pada website jika berhasil diakses\n\n\n```python\ndf_results\n```\n\n\n\n\n\u003cdiv\u003e\n\u003cstyle scoped\u003e\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n\u003c/style\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003eurl\u003c/th\u003e\n      \u003cth\u003eexpected_result\u003c/th\u003e\n      \u003cth\u003eactual_result\u003c/th\u003e\n      \u003cth\u003etimestamp\u003c/th\u003e\n      \u003cth\u003eactual_title\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003ehttps://www.Indonesia-mmm_net.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmindonesialegal.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003ehttps://www.klikmmm.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003ehttps://www.websupportmmm.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003ehttps://www.bisnismavro.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e5\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmindonesiaclub.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e6\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmindonesian.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003ehttps://www.bisnis3m.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmindonesia1.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmlovers.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmindo.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003ehttps://www.lk.sergeymavrodi.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e12\u003c/th\u003e\n      \u003ctd\u003ehttps://www.lk.sergey-mavrodi-mmm.org\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e13\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmcommunity.net\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e14\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmindonesia9.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e15\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmm-dotinfo.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e16\u003c/th\u003e\n      \u003ctd\u003ehttps://www.mmmincome.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e17\u003c/th\u003e\n      \u003ctd\u003ehttps://www.2012.sergey-mavrodi.ms\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e18\u003c/th\u003e\n      \u003ctd\u003ehttps://www.2012.sergey-mavrodi-mmm.net\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e19\u003c/th\u003e\n      \u003ctd\u003e2012.sergeymavrodi.com\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003efail\u003c/td\u003e\n      \u003ctd\u003e2024-11-11 14:24:25\u003c/td\u003e\n      \u003ctd\u003eNone\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdianpermana%2Fend2end-validate-website-blocked","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdianpermana%2Fend2end-validate-website-blocked","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdianpermana%2Fend2end-validate-website-blocked/lists"}