WordPress-এর বিল্ট-ইন অ্যাডমিন-ইমেল ভেরিফিকেশন স্ক্রিন—যা ভার্সন ৫.৩ থেকে প্রতি কয়েক মাস অন্তর প্রদর্শিত হয়—এমন Playwright অটোমেশনকে বাধাগ্রস্ত করে যা SSH অ্যাক্সেস নেই এমন সাইটে প্লাগইন আপডেট করে। এই অতিরিক্ত ধাপটি স্ক্রিপ্টগুলোকে এমন একটি বাটনের জন্য অপেক্ষা করতে বাধ্য করে যা কখনোই দেখা যায় না, যার ফলে টাইমআউট এবং ডিপ্লয়মেন্ট আটকে যায়।

কী কারণে এই স্থবিরতা ঘটে

যখন একটি Playwright স্ক্রিপ্ট wp-admin-এ লগ ইন করে, তখন এটি আশা করে যে ড্যাশবোর্ডটি সাথে সাথে লোড হবে। পরিবর্তে, WordPress মাঝে মাঝে এমন একটি পেজে রিডাইরেক্ট করে যার URL-এ adminhash= থাকে। পেজটি জিজ্ঞাসা করে, “Is this still your address?” এবং সেখানে দুটি বাটন থাকে: Yes, this is my address এবং I’ll wait। একজন মানুষ “I’ll wait” বাটনে ক্লিক করে পরে কাজ চালিয়ে যান; কিন্তু একটি আনঅ্যাটেন্ডেড (unattended) স্ক্রিপ্ট ড্যাশবোর্ডের এলিমেন্টগুলোর জন্য খুঁজতে থাকে, সেগুলো খুঁজে পায় না এবং শেষ পর্যন্ত টাইমআউট হয়ে যায়।

কেন এই প্রম্পটটি দেখানো হয়

অ্যাডমিন ইমেল ঠিকানাটি এখনও ব্যবহারযোগ্য কি না তা নিশ্চিত করার জন্য WordPress এই প্রম্পটটি যুক্ত করেছে। সাইটের কার্যক্রম নির্বিশেষে এটি মোটামুটি প্রতি কয়েক মাস অন্তর প্রদর্শিত হয় এবং এটি সাইট মালিকদের জন্য একটি নিরাপত্তা পরীক্ষা হিসেবে কাজ করে, যারা হয়তো ইমেল ঠিকানার অ্যাক্সেস হারিয়ে ফেলেছেন।

কারা প্রভাবিত হয়

  • ডেভেলপাররা যারা প্লাগইন আপডেট করা, UI টেস্ট চালানো বা বাল্ক অ্যাডমিন টাস্ক করার জন্য Playwright-এর ওপর নির্ভর করেন।
  • হোস্টিং প্রোভাইডাররা যারা SSH সীমাবদ্ধ করে রাখেন, ফলে ব্যবহারকারীরা ব্রাউজারের মাধ্যমে অটোমেশন করতে বাধ্য হন।
  • সাইট মালিকরা যারা আপডেট পেতে দেরি দেখেন কারণ অটোমেশন কখনোই আপডেট স্ক্রিনে পৌঁছাতে পারে না।

এর ক্ষতি কেবল কয়েক সেকেন্ড সময় নষ্ট হওয়া নয়; বারবার ব্যর্থতা নির্ধারিত মেইনটেন্যান্স উইন্ডো বন্ধ করে দিতে পারে এবং ম্যানুয়াল হস্তক্ষেপ করতে বাধ্য করতে পারে।

অনাকাঙ্ক্ষিত স্ক্রিনটি শনাক্ত করা

বর্তমান URL-এ adminhash= এর উপস্থিতি একটি নির্ভরযোগ্য নির্দেশক। এই স্ট্রিংটি শুধুমাত্র ইমেল-ভেরিফিকেশন পেজে দেখা যায়, সাধারণ ড্যাশবোর্ড বা অন্য কোনো অ্যাডমিন স্ক্রিনে নয়।

একটি সহজ বাইপাস

লগইন ধাপের ঠিক পরেই একটি চেক যুক্ত করুন। যদি URL-এ adminhash= থাকে, তবে “I’ll wait” বাটনে ক্লিক করুন এবং কাজ চালিয়ে যাওয়ার আগে পেজটি স্থিতিশীল হওয়া পর্যন্ত অপেক্ষা করুন।

def ensure_past_email_check(page):
    if "adminhash=" in page.url:
        page.click("text=I'll wait")
        page.wait_for_load_state("networkidle")

প্রতিটি সফল লগইনের ঠিক পরেই ensure_past_email_check(page) কল করুন। ভেরিফিকেশন স্ক্রিন প্রদর্শিত না হলে ফাংশনটি কিছুই করে না, যা স্ক্রিপ্টটিকে দ্রুত এবং ডিটারমিনিস্টিক (deterministic) রাখে।

কখন বাইপাসটি ব্যবহার করবেন

যে সমস্ত অটোমেটেড ওয়ার্কফ্লো মানুষের তত্ত্বাবধান ছাড়াই চলতে হবে—যেমন প্রতি রাতে প্লাগইন আপডেট বা কন্টিনিউয়াস-ইন্টিগ্রেশন (CI) UI টেস্ট—সেগুলোর জন্য এই বাইপাসটি ব্যবহার করা বাস্তবসম্মত। এটি ভেরিফিকেশন ধাপটিকে একটি আকস্মিক ব্যর্থতা হিসেবে না দেখে একটি পূর্বনির্ধারিত বিকল্প পথ হিসেবে বিবেচনা করে।

পাল্টা যুক্তি

কিছু অ্যাডমিনিস্ট্রেটর যুক্তি দেন যে, স্বয়ংক্রিয়ভাবে প্রম্পটটি বাতিল করলে প্রকৃত ইমেল-ডেলিভারি সমস্যাটি আড়ালে পড়ে যেতে পারে। যদি অ্যাডমিন ইমেলটি সত্যিই পৌঁছানো অসম্ভব হয়ে পড়ে, তবে সাইটটি গুরুত্বপূর্ণ নোটিফিকেশন মিস করতে পারে। এই ধরনের ক্ষেত্রে, একটি সূক্ষ্ম পদ্ধতি—যেমন ইভেন্টটি লগ করা, একটি অ্যালার্ট পাঠানো বা অটোমেশন সাময়িকভাবে থামিয়ে দেওয়া—বেশি পছন্দনীয় হতে পারে।

পরবর্তীতে যা খেয়াল রাখতে হবে

  • WordPress URL প্যাটার্ন পরিবর্তন করতে পারে বা অতিরিক্ত ভেরিফিকেশন ধাপ যোগ করতে পারে, যা adminhash= চেকটিকে অকার্যকর করে দেবে। কোর রিলিজ নোটের দিকে নজর রাখুন।
  • Playwright-এর সিলেক্টর ইঞ্জিন বিবর্তিত হয়; যেকোনো UI রিডিজাইনের পর "text=I'll wait" টেক্সট সিলেক্টরটি যেন বাটনটির সাথে মিলে যায় তা নিশ্চিত করুন।
  • আপনি যদি অনেক সাইট পরিচালনা করেন, তবে কোড ডুপ্লিকেশন এড়াতে একটি শেয়ার্ড লাইব্রেরিতে বাইপাস লজিকটি কেন্দ্রীভূত করার কথা বিবেচনা করুন।

অ্যাডমিন-ইমেল কনফার্মেশন পেজটি স্পষ্টভাবে হ্যান্ডেল করার মাধ্যমে, ডেভেলপাররা একটি আকস্মিক টাইমআউটকে তাদের Playwright স্ক্রিপ্টের একটি রুটিন অংশে পরিণত করতে পারেন, যা প্ল্যাটফর্মটি অপ্রত্যাশিত নিরাপত্তা প্রম্পট দিলেও WordPress অটোমেশনকে নির্ভরযোগ্য রাখে।

Source: https://dev.to/susumun/browser-based-updates-getting-stuck-on-the-confirm-your-admin-email-screen-why-playwright-6io