{"id":16040,"date":"2026-02-10T14:25:37","date_gmt":"2026-02-10T07:25:37","guid":{"rendered":"https:\/\/labamu.co.id\/career\/qa-intern\/"},"modified":"2026-02-10T15:57:31","modified_gmt":"2026-02-10T08:57:31","slug":"qa-intern","status":"publish","type":"career","link":"https:\/\/labamu.co.id\/en\/career\/qa-intern\/","title":{"rendered":"QA Intern"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"16040\" class=\"elementor elementor-16040 elementor-15977\" data-elementor-post-type=\"career\">\n\t\t\t\t<div class=\"elementor-element elementor-element-45ba3c15 e-flex e-con-boxed e-con e-parent\" data-id=\"45ba3c15\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-82aea89 e-con-full e-flex e-con e-child\" data-id=\"82aea89\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-348a9c4 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"348a9c4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInLeft&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5005abb6 elementor-widget elementor-widget-page-title\" data-id=\"5005abb6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;align&quot;:&quot;left&quot;}\" data-widget_type=\"page-title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\n\t\t<div class=\"hfe-page-title hfe-page-title-wrapper elementor-widget-heading\">\n\n\t\t\t\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n\t\t\t\t\t\t\t\t\n\t\t\t\tQA Intern  \n\t\t\t<\/h2 > \n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b030cee elementor-widget elementor-widget-html\" data-id=\"7b030cee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"career-meta\"><\/div><div id=\"career-detail\" class=\"career-detail-wrapper\"><\/div><style>.career-meta {\n    display: flex;\n    align-items: center;\n    font-family: \"Inter\", sans-serif;\n    font-size: 18px;\n    color: #fff; \/* ganti sesuai tema (misal #222 utk dark text) *\/\n    flex-wrap: wrap;\n  }\n  \n  .career-meta span {\n    display: inline-block;\n    margin-right: 8px;\n  }\n  \n  .separator {\n    opacity: 0.6;\n    margin: 0 8px;\n  }\n  \n  .posted-time {\n    margin-left: auto;\n    font-size: 13px;\n    opacity: 0.8;\n  }\n  \n  .btn-apply {\n    border: 1px solid #fff;\n    color: #fff;\n    padding: 12px 24px;\n    border-radius: 8px;\n    transition: 0.3s;\n    text-decoration: none;\n  }\n\n  .btn-apply:hover {\n    background: #fff;\n    color: #fff;\n  }\n  <\/style><script>document.addEventListener(\"DOMContentLoaded\", function () {\n  const pathParts = window.location.pathname.split(\"\/\").filter(Boolean);\n  const slug = pathParts[pathParts.length - 1];\n  const apiUrl = `\/wp-json\/wp\/v2\/career?slug=${slug}&_fields=acf,date`;\n\n  fetch(apiUrl)\n    .then(res => res.json())\n    .then(data => {\n      if (!data.length || !data[0].acf) return;\n      const acf = data[0].acf;\n      const date = data[0].date;\n      const dateTime = new Date(date);\n\n\n      const buttonHtml =  `<button class=\"btn-apply\" onclick=\"window.open('${acf.link}', '_blank')\">Daftar Sekarang\n        <\/button>`\n\n      document.querySelector(\".career-meta\").innerHTML = `\n        <span>${acf.location}<\/span><span class=\"separator\">\u25aa<\/span><span>${acf.job_type.split(\": \")[1]}<\/span><span class=\"separator\">\u25aa<\/span><span>Posted Date: ${dateTime.toLocaleDateString(\"id-ID\")}<\/span>`;\n\n    })\n    .catch(err => console.error(err));\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2ea9fe3a elementor-widget elementor-widget-heading\" data-id=\"2ea9fe3a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Final year students \/ fresh graduates<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e13ce5a elementor-widget elementor-widget-button\" data-id=\"7e13ce5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/labamu.co.id\/apply-career\/?position=qa-intern\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Apply<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-36035b62 e-flex e-con-boxed e-con e-parent\" data-id=\"36035b62\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-32cfec36 elementor-widget elementor-widget-text-editor\" data-id=\"32cfec36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">The QA Intern position is aimed at final year students or fresh graduates who want to develop a career in the field of Quality Assurance. In this role, you will assist the QA team in manual and automation testing activities, work closely with the developer team and product manager to ensure application quality is maintained, and be directly involved in the testing process on various projects. You will gain practical experience in a professional work environment, contribute to real products, and report work results directly to the QA Lead in a 6 month paid internship scheme with a hybrid work system at BSD.  <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-939e900 e-flex e-con-boxed e-con e-parent\" data-id=\"939e900\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5a3d0dae elementor-widget elementor-widget-text-editor\" data-id=\"5a3d0dae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3><b>Key Responsibilities:<\/b><\/h3><ul><li>Assist the QA team in working on automation testing projects<\/li><li>Actively collaborate with developers and product managers to ensure product quality<\/li><li>Perform manual testing and support the implementation and maintenance of automated tests<\/li><li>Document testing results and report any bugs or issues found<\/li><li>Report progress and work results directly to QA Lead<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-550c95bd elementor-widget elementor-widget-text-editor\" data-id=\"550c95bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3><b>Required Qualifications:<\/b><\/h3><ul><li>Final year students \/ fresh graduates<\/li><li>Have a commitment to take part in a paid internship for 6 months<\/li><li>Willing to work hybrid in BSD<\/li><li>Preferably have experience or basic understanding of coding, QA manual testing, and automation testing<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1638b417 elementor-widget elementor-widget-html\" data-id=\"1638b417\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"event-register\" class=\"register-wrapper\"><\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  \/\/ Ambil slug dari URL\n  const pathParts = window.location.pathname.split(\"\/\").filter(Boolean);\n  const slug = pathParts[pathParts.length - 1]; \n\n  \/\/ API endpoint\n  const apiUrl = `\/wp-json\/wp\/v2\/career?slug=${slug}&_fields=acf`;\n\n  fetch(apiUrl)\n    .then(res => res.json())\n    .then(data => {\n      if (!data.length || !data[0].acf) {\n        document.getElementById(\"event-register\").innerHTML = \"\";\n        return;\n      }\n\n      const acf = data[0].acf;\n        const dateTime = new Date(acf.date_time);\n        const now = new Date();\n\n\n      \/\/ cek apakah sudah lewat\n      const isExpired = dateTime < now;\n      const buttonHtml =  `<a href=\"${acf.link}\" target=\"_blank\" class=\"btn-register\">Apply<\/a>`\n\n      document.getElementById(\"event-register\").innerHTML = `\n        ${buttonHtml}\n      `;\n    })\n    .catch(err => {\n      console.error(err);\n      document.getElementById(\"event-register\").innerHTML = \"\";\n    });\n});\n<\/script>\n\n<style>\n.register-wrapper {\n  display: flex;  \/* vertical center (kalau tinggi diberi) *\/\n  margin: 20px 20px;\n}\n\n.btn-register {\n  display: inline-block;\n  background: #007bff;\n  color: #fff !important;\n  padding: 12px 28px;\n  border-radius: 8px;\n  font-weight: bold;\n  font-size: 16px;\n  text-decoration: none;\n  transition: background 0.3s;\n}\n\n.btn-register:hover {\n  background: #0056b3;\n}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2ecb0ccf e-flex e-con-boxed e-con e-parent\" data-id=\"2ecb0ccf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-419b666d e-con-full e-flex e-con e-child\" data-id=\"419b666d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-33b48abb elementor-widget elementor-widget-heading\" data-id=\"33b48abb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Career Recommendations For You<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-407d9a4a e-flex e-con-boxed e-con e-parent\" data-id=\"407d9a4a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ed7d883 elementor-widget elementor-widget-html\" data-id=\"3ed7d883\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\/* Wrapper *\/\n    .post-grid-wrapper {\n      max-width: 1200px;\n      margin: 0 auto;\n      padding: 20px;\n      font-family: sans-serif;\n    }\n    \n    \/* Dropdown + search *\/\n    .post-filter {\n     margin-bottom: 20px;\n     display: flex;\n     justify-content: space-between; \/* kiri - kanan *\/\n     align-items: center;\n     flex-wrap: wrap; \/* biar turun ke bawah di layar kecil *\/\n     gap: 20px;\n    }\n\n    \/* Kiri *\/\n.filter-left {\n  display: flex;\n  align-items: center;\n  gap: 15px;\n}\n\n\/* Kanan *\/\n.filter-right {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n}\n\n    .post-filter label {\n     font-size: 0.95rem;\n     margin: 0;\n     color: #333;\n     white-space: nowrap;\n    }\n\n    \/* Dropdown *\/\n.post-filter select {\n  padding: 8px 12px;\n  border-radius: 6px;\n  border: 1px solid #ccc;\n  font-size: 0.95rem;\n  background: #fff;\n}\n.search-wrapper input {\n  padding: 8px 12px;\n  padding-right: 30px;\n  border-radius: 6px;\n  border: 1px solid #ccc;\n  font-size: 0.95rem;\n}\n\n\/* Search box *\/\n.search-wrapper {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n}\n    .search-wrapper input {\n     padding-right: 30px;\n    }\n    .search-wrapper .search-icon {\n  position: absolute;\n  right: 8px;\n  top: 50%;\n  transform: translateY(-50%);\n  color: #666;\n  font-size: 0.9rem;\n}\n    \n    \/* Grid layout *\/\n    .post-grid {\n      --gap: 20px;\n      display: grid;\n      gap: var(--gap);\n      grid-template-columns: repeat(1, 1fr);\n    }\n    @media (min-width: 600px) {\n      .post-grid { grid-template-columns: repeat(2, 1fr); }\n    }\n    @media (min-width: 960px) {\n      .post-grid { grid-template-columns: repeat(3, 1fr); }\n    }\n    \n    \/* Card style *\/\n    .post-card {\n      background: #fff;\n      border-radius: 12px;\n      overflow: hidden;\n      box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n      display: flex;\n      flex-direction: column;\n      transition: transform 0.2s ease, box-shadow 0.2s ease;\n    }\n    .post-card:hover {\n      transform: translateY(-4px);\n      box-shadow: 0 6px 20px rgba(0,0,0,0.15);\n    }\n    .post-card img {\n      width: 100%;\n      aspect-ratio: 16\/9;\n      object-fit: cover;\n      display: block;\n    }\n    .post-card .card-body {\n      padding: 18px;\n      text-align: center;\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      gap: 12px;\n    }\n    .post-card h3 {\n        margin: 0;\n        font-size: 1.2rem;\n        font-weight: 600;\n        color: #111;\n\n        display: -webkit-box;\n        -webkit-line-clamp: 2;   \/* maksimal 2 baris *\/\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n        text-overflow: ellipsis;\n    }\n    .post-card .excerpt {\n      font-size: 0.95rem;\n      color: #444;\n      flex-grow: 1;\n    }\n    .post-card .readmore a {\n      display: inline-block;\n      padding: 10px 20px;\n      border: 1px solid #ccc;\n      border-radius: 6px;\n      text-decoration: none;\n      color: #111;\n      background: #fff;\n      font-size: 0.9rem;\n      transition: background 0.2s, color 0.2s;\n    }\n    .post-card .readmore a:first-child {\n      background: #fff;\n      color: #111;\n    }\n    .post-card .readmore a:first-child:hover {\n      background: #006bff;\n      color: #fff;\n      border-color: #006bff;\n    }\n    .post-card .readmore .btn-register {\n      background: #006bff;\n      color: #fff;\n      border-color: #006bff;\n    }\n\n    .post-card .readmore .btn-register.disabled {\n      background: #ccc;\n      color: #fff;\n      border-color: #ccc;\n      cursor: not-allowed;\n    }\n    \n    .loading, .error {\n      text-align: center;\n      padding: 20px;\n      color: #666;\n    }\n\/* Status buttons *\/\n.filter-status {\n  display: flex;\n  gap: 10px;\n}\n.filter-status button {\n  padding: 8px 18px;\n  border: 1px solid #ccc;\n  background: #fff;\n  border-radius: 6px;\n  cursor: pointer;\n  font-size: 0.95rem;\n  transition: all 0.2s;\n  color: #111;\n}\n.filter-status button:hover {\n  background: #006bff;\n  color: #fff;\n  border-color: #006bff;\n}\n.filter-status button.active {\n  background: #006bff;\n  color: #fff;\n  border-color: #006bff;\n}\n    <\/style><div class=\"post-grid-wrapper\"><!-- Grid --><div id=\"postGrid\"><div class=\"loading\">Loading posts...<\/div><\/div><\/div><script>(function(){\n          const gridContainer = document.getElementById(\"postGrid\");\n        \n          const baseUrl = \"\/wp-json\/wp\/v2\";\n          const postsPerPage = 6;\n        \n          \/\/ helper: strip HTML\n          function stripHtml(html){\n            const tmp = document.createElement(\"div\");\n            tmp.innerHTML = html;\n            return tmp.textContent || tmp.innerText || \"\";\n          }\n          function truncate(str, n){\n            return str.length > n ? str.slice(0, n).trim() + \"\u2026\" : str;\n          }\n        \n          \/\/ Fetch posts\n          async function loadPosts(catId = \"\", searchTerm = \"\") {\n            gridContainer.innerHTML = '<div class=\"loading\">Loading posts...<\/div>';\n        \n            let url = `${baseUrl}\/career?per_page=${postsPerPage}&_embed`;\n        \n            try {\n              const res = await fetch(url);\n              if (!res.ok) throw new Error(\"Gagal ambil data post\");\n              const posts = await res.json();\n              console.log(posts);\n                \n        \n              const grid = document.createElement(\"div\");\n              grid.className = \"post-grid\";\n        \n              posts.forEach(post => {\n                let thumb = \"\";\n                try {\n                  const fm = post._embedded[\"wp:featuredmedia\"][0];\n                  thumb = fm?.source_url || \"\";\n                } catch (e) {}\n        \n                const acf = post.acf || {};\n                \n\n                const readMoreHtml = `<a href=\"${post.link}\">Read More<\/a>`\n\n                \n        \n                const card = document.createElement(\"div\");\n                card.className = \"post-card\";\n                card.innerHTML = `\n                  ${thumb ? `<img decoding=\"async\" src=\"${thumb}\" alt=\"${post.title.rendered}\">` : \"\"}\n                  <div class=\"card-body\"><h3>${post.title.rendered}<\/h3><div class=\"readmore\">${readMoreHtml}\n                    <\/div><\/div>`;\n                grid.appendChild(card);\n              });\n        \n              gridContainer.innerHTML = \"\";\n              gridContainer.appendChild(grid);\n            } catch (err) {\n              gridContainer.innerHTML = `<div class=\"error\">Error: ${err.message}<\/div>`;\n            }\n          }\n        \n          \/\/ Init\n          loadPosts();\n        })();\n        <\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":16033,"template":"","meta":{"_acf_changed":false,"content-type":"","om_disable_all_campaigns":false},"categories":[362,363],"class_list":["post-16040","career","type-career","status-publish","has-post-thumbnail","hentry","category-career","category-software-engineering"],"acf":{"description":"The QA Intern position is aimed at final year students or fresh graduates who want to develop a career in the field of Quality Assurance. In this role, you will assist the QA team in manual and automation testing activities, work closely with the developer team and product manager to ensure application quality is maintained, and be directly involved in the testing process on various projects. You will gain practical experience in a professional work environment, contribute to real products, and report work results directly to the QA Lead in a 6 month paid internship scheme with a hybrid work system at BSD.  ","job_type":"intern: Internship","link":"https:\/\/labamu.co.id\/apply-career\/?position=qa-intern","location":"Indonesia - BSD City"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career\/16040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career"}],"about":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/types\/career"}],"version-history":[{"count":1,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career\/16040\/revisions"}],"predecessor-version":[{"id":16041,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/career\/16040\/revisions\/16041"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/media\/16033"}],"wp:attachment":[{"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/media?parent=16040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labamu.co.id\/en\/wp-json\/wp\/v2\/categories?post=16040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}