{"id":43224,"date":"2025-09-11T05:50:21","date_gmt":"2025-09-11T12:50:21","guid":{"rendered":"https:\/\/coderpad.io\/?post_type=doc&#038;p=43224"},"modified":"2026-01-30T06:09:35","modified_gmt":"2026-01-30T14:09:35","slug":"questions-sur-le-projet-personnalise","status":"publish","type":"doc","link":"https:\/\/coderpad.io\/fr\/resources\/docs\/screen\/customizing-questions\/creating-custom-questions\/custom-project-questions\/","title":{"rendered":"Questions sur le projet personnalis\u00e9"},"content":{"rendered":"\n<p>To create a custom project, navigate to the <strong><em>Questions <\/em><\/strong>page and click <strong>Create question<\/strong>, then select <strong>Project<\/strong>. This opens the project creation workflow, where you&#8217;ll design a complete coding environment tailored to your specific assessment needs.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3-1024x517.png\" alt=\"Screenshot of the CoderPad Screen interface showing a pop-up window titled 'Select question type.' The options listed are Multiple choice, Free text, Coding exercise, File upload, and Project. The 'Project' option is labeled with a red 'New' tag. A large red arrow points directly to the 'Project' option\" class=\"wp-image-43166\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3-1024x517.png 1024w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3-300x151.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3-768x388.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3-18x9.png 18w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-3.png 1250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><nav aria-label=\"Table of Contents\"><ul><li class=\"\"><a href=\"#selecting-a-template\">Selecting a template<\/a><\/li><li class=\"\"><a href=\"#editing-your-project-in-the-ide\">\nEditing your project in the IDE<\/a><\/li><li class=\"\"><a href=\"#whats-available-in-the-ide\">\nWhat\u2019s available in the IDE<\/a><ul><li class=\"\"><a href=\"#candidate-instructions\">Candidate instructions<\/a><\/li><li class=\"\"><a href=\"#coderpad-settings-json-file\">coderpad\/settings.json file<\/a><\/li><li class=\"\"><a href=\"#recommend-extensions\">Recommend extensions<\/a><\/li><li class=\"\"><a href=\"#pre-install-extensions\">Pre-install extensions<\/a><\/li><li class=\"\"><a href=\"#restrict-extensions\">Allowed &amp; restricted extensions<\/a><\/li><li class=\"\"><a href=\"#ai-assistant\">AI Assistant<\/a><\/li><li class=\"\"><a href=\"#front-end-render\">Front-end render<\/a><ul><li class=\"\"><a href=\"#web-preview\">Web preview<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#connecting-to-a-database\">Connecting to a database<\/a><\/li><li class=\"\"><a href=\"#git-integration\">Git integration<\/a><\/li><li class=\"\"><a href=\"#how-to-save-your-work\">How to save your work<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#auto-grading\">Auto-grading<\/a><ul><li class=\"\"><a href=\"#configuration-example\">Run command requirements<\/a><\/li><li class=\"\"><a href=\"#run-command-requirements\">Run command requirements<\/a><ul><li class=\"\"><a href=\"#running-multiple-test-suites-backend-frontend\">Running Multiple Test Suites (Backend + Frontend)<\/a><\/li><li class=\"\"><a href=\"#correct-cleanup-behavior\">Correct Cleanup Behavior<\/a><\/li><li class=\"\"><a href=\"#important-path-differences-between-ide-and-auto-grader\">PATH Differences Between IDE and Auto-grader<\/a><\/li><li class=\"\"><a href=\"#skipped-tests-are-not-imported\">Skipped Tests Are Not Imported<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#supported-report-formats\">Supported report formats<\/a><\/li><li class=\"\"><a href=\"#evaluation-criteria-configuration\">Evaluation criteria configuration<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#manual-grading\">Manual grading<\/a><\/li><li class=\"\"><a href=\"#file-visibility\">File visibility<\/a><ul><li class=\"\"><a href=\"#\ud83e\uddea-does-file-hiding-work-in-preview-mode\">Does file hiding work in Preview mode?<\/a><\/li><li class=\"\"><a href=\"#\u2139\ufe0f-additional-examples\">Additional examples<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#s\">Sync from project<\/a><\/li><li class=\"\"><a href=\"#testing-your-question\">Testing your question without using quota (Preview mode)<\/a><\/li><li class=\"\"><a href=\"#regrading\">Re-grading<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"selecting-a-template\">Selecting a template<\/h2>\n\n\n\n<p>Templates are preconfigured minimal projects built around specific technology combinations, designed to serve as starting points for your custom projects.<\/p>\n\n\n\n<p>Templates are intentionally minimal to provide a clean foundation while giving you complete flexibility to customize the environment for your specific requirements.<\/p>\n\n\n\n<p>\/quote<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"436\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9-1024x436.png\" alt=\"Screenshot of the 'Select template' screen in CoderPad. Eight template options are displayed in a grid:\n\nDefault template \u2013 Minimalist Node.js template.\n\nReact \u2013 Basic React 19 counter app with Vite and Node.js.\n\nAngular \u2013 Basic Angular 19 app with Vite and Node.js.\n\nPython \u2013 Environment with Poetry, Volta, and Node.js.\n\nJava \u2013 Environment with Maven, Gradle, Volta, and Node.js.\n\nGo \u2013 Environment with Volta and Node.js.\n\n.NET \u2013 Environment (C#, F#, Vb.net) with Xunit, Volta, and Node.js.\n\nNext.js \u2013 Full stack Next.js 15.5 with Node.js, Prisma, and PostgreSQL.\" class=\"wp-image-43204\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9-1024x436.png 1024w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9-300x128.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9-768x327.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9-1536x654.png 1536w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9-18x8.png 18w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-9.png 1837w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"editing-your-project-in-the-ide\"><br><strong>Editing your project in the IDE<\/strong><\/h2>\n\n\n\n<p>Once you select a template, scroll down to the <em>Project<\/em> section and click <strong>Edit your project in IDE<\/strong>. You&#8217;ll enter a full-featured VS Code environment where you can design your project.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"219\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-10.png\" alt=\"Screenshot of the CoderPad Screen interface in the 'Questions' section. A highlighted box labeled 'Project' includes a folder icon and a button labeled 'Edit your project in IDE.' Below, the 'Settings' panel displays fields: Domain set to Node.js, Difficulty set to Easy, Duration 40 minutes, Points 200, and Team set to CoderPad Inc.\" class=\"wp-image-43205\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-10.png 834w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-10-300x79.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-10-768x202.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-10-18x5.png 18w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"whats-available-in-the-ide\"><br>What\u2019s available in the IDE<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6-1024x486.png\" alt=\"Screenshot of the CoderPad Screen 'Project edition' interface. The left sidebar shows a project folder named 'PROJECT [CODERPAD]' containing files: .coderpad, .vscode, .gitignore, and instructions.md (selected). The main editor displays the instructions.md file with markdown text explaining how to use the project template, save work, and define instructions. A right-hand panel labeled 'AI Assist' shows the ChatGPT logo with a prompt field. At the bottom right, a yellow button labeled 'Update project' is visible\" class=\"wp-image-43171\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6-1024x486.png 1024w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6-300x143.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6-768x365.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6-1536x730.png 1536w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6-18x9.png 18w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-6.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Your custom project environment includes all standard VS Code features:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Integrated terminal<\/strong> with full command-line access for package installation, script execution, and system operations<\/li>\n\n\n\n<li><strong>IntelliSense<\/strong> providing intelligent code completion, parameter hints, and error detection<\/li>\n\n\n\n<li><strong>AI assistant<\/strong> to get help refining your project<\/li>\n\n\n\n<li><strong>Extension marketplace<\/strong> access to install language-specific tools and productivity enhancers<\/li>\n\n\n\n<li><strong>Built-in debugger<\/strong> supporting multiple programming languages with breakpoints, variable inspection, and call stack analysis<\/li>\n\n\n\n<li><strong>Git integration<\/strong> for version control workflows and change tracking<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u2139\ufe0f Environment configurations<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projects run inside isolated Linux x64 containers.<\/li>\n\n\n\n<li>Project size (maximum size of the repository): <strong>50MB<\/strong><\/li>\n\n\n\n<li>Disk space (storage available to candidates during their project): <strong>5GB<\/strong><\/li>\n\n\n\n<li>Memory (RAM): <strong>2GB<\/strong><\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"candidate-instructions\"><strong>Candidate instructions<\/strong><\/h3>\n\n\n\n<p>Every project must include an <code>instructions.md<\/code> file containing your problem statement and setup guidance. It uses markdown syntax. This file is automatically opened and rendered when the candidate starts the question.<\/p>\n\n\n\n<p>Use it for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Problem statement and acceptance criteria<\/li>\n\n\n\n<li>Setup\/run steps and environment notes<\/li>\n\n\n\n<li>Any constraints, expectations, or deliverables<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"coderpad-settings-json-file\"><strong><code>coderpad\/settings.json<\/code> file<\/strong><\/h3>\n\n\n\n<p>The <code>.coderpad\/settings.json<\/code> file controls critical project behavior and must be configured properly for optimal candidate experience.<\/p>\n\n\n\n<p><strong>Example<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n    <span class=\"hljs-attr\">\"files.exclude\"<\/span>: &#91;<span class=\"hljs-string\">\"solution.md\"<\/span>],\n    <span class=\"hljs-attr\">\"workbench.defaultOpenFiles\"<\/span>: &#91;<span class=\"hljs-string\">\"src\/App.tsx\"<\/span>],\n    <span class=\"hljs-attr\">\"autograding\"<\/span>: {\n        <span class=\"hljs-attr\">\"runCommand\"<\/span>: <span class=\"hljs-string\">\"rm -f result.tap &amp;&amp; npm ci &amp;&amp; npx jest --ci --reporters=default --reporters=jest-tap-reporter &gt; result.tap\"<\/span>,\n        <span class=\"hljs-attr\">\"reports\"<\/span>: {\n            <span class=\"hljs-attr\">\"TAP\"<\/span>: &#91;<span class=\"hljs-string\">\"result.tap\"<\/span>]\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Configuration options<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Open files<\/strong>: Specify which files should be open by default when candidates start the project (in addition to <code>instructions.md<\/code>). This helps direct their attention to starting points or key files.<\/li>\n\n\n\n<li><strong>Excluded files<\/strong>: List files and directories that won&#8217;t be included in the candidate&#8217;s project environment.<\/li>\n\n\n\n<li><strong>Autograding logic<\/strong>: Define how automated tests should run and report results (detailed in the auto-grading section below).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"recommend-extensions\"><strong>Recommend extensions<\/strong><\/h3>\n\n\n\n<p>Use the standard VS Code file <strong><code>.vscode\/extensions.json<\/code><\/strong> to recommend extensions. Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n  <span class=\"hljs-attr\">\"recommendations\"<\/span>: &#91;\n    <span class=\"hljs-string\">\"Orta.vscode-jest\"<\/span>\n  ]\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>When candidates start your project, they&#8217;ll receive notifications suggesting these extensions, helping them set up an optimal development environment quickly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pre-install-extensions\"><strong>Pre-install extensions<\/strong><\/h3>\n\n\n\n<p>You can define a list of extensions that will install automatically at project startup, for both recruiters and candidates.<\/p>\n\n\n\n<p>To set this up, add your extensions to the&nbsp;<code>vscodeExtensions.installedByDefault<\/code>&nbsp;field in your project&#8217;s&nbsp;<code>.coderpad\/settings.json<\/code>&nbsp;file. Here&#8217;s an example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n    <span class=\"hljs-attr\">\"vscodeExtensions.installedByDefault\"<\/span>: &#91;\n        <span class=\"hljs-string\">\"ms-python.python\"<\/span>,\n        <span class=\"hljs-string\">\"esbenp.prettier-vscode\"<\/span>\n    ]\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"restrict-extensions\">Allowed &amp; <strong>restricted extensions<\/strong><\/h3>\n\n\n\n<p>You can also block candidates from installing certain extensions.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u26a0\ufe0f If the setting is not configured, all extensions are allowed. If the setting is configured, all extensions that are not listed are blocked from installing<\/p>\n<\/blockquote>\n\n\n\n<p>For example, the following means that all extensions are not allowed, except GitHub and Microsoft ones.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n     <span class=\"hljs-attr\">\"extensions.allowed\"<\/span>: {\n          <span class=\"hljs-attr\">\"github\"<\/span>: <span class=\"hljs-literal\">true<\/span>,\n          <span class=\"hljs-attr\">\"microsoft\"<\/span>: <span class=\"hljs-literal\">true<\/span>\n     }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For more information on how to allow or disallow certain extensions (including different versions), <a href=\"https:\/\/code.visualstudio.com\/docs\/enterprise\/extensions\" target=\"_blank\" rel=\"noopener\">check out the VS Code documentation here<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ai-assistant\"><strong>AI Assistant<\/strong><\/h3>\n\n\n\n<p>The AI Assistant can be enabled or disabled at the test level through test settings. If enabled:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Candidates see an <strong>AI assistant<\/strong> panel and can chat with an available model.<\/li>\n\n\n\n<li>AI conversations appear in playback for reviewers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"front-end-render\"><strong>Front-end render<\/strong><\/h3>\n\n\n\n<p>For web development projects, the VS Code <strong>Simple Browser<\/strong> module automatically renders your application, providing candidates with immediate visual feedback.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When your development server starts on any available port, the Simple Browser opens automatically<\/li>\n\n\n\n<li>The <strong>Ports<\/strong> view in the VS Code panel shows all forwarded ports and their status<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"web-preview\"><strong>Web preview<\/strong><\/h4>\n\n\n\n<p>For web development projects, a web preview component can be used to render your application, providing candidates with immediate visual feedback. To enable a web preview in your projects, configure the exposed service in the&nbsp;<code>.coderpad\/settings.json<\/code>&nbsp;file using the following fields:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>mode<\/code>: Use this mode to enable the web preview<\/li>\n\n\n\n<li><code>openByDefault<\/code>: Determines whether the preview opens automatically when the project starts<\/li>\n\n\n\n<li><code>port<\/code>: Specifies which port the preview will map to<\/li>\n\n\n\n<li><code>name<\/code>:  Set a custom display name for your app<\/li>\n<\/ul>\n\n\n\n<p>For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\"><span class=\"hljs-string\">\"exposed\"<\/span>: &#91;\n    {\n        <span class=\"hljs-attr\">\"mode\"<\/span>: <span class=\"hljs-string\">\"browser\"<\/span>, \n        <span class=\"hljs-attr\">\"openByDefault\"<\/span>: <span class=\"hljs-literal\">true<\/span>, \n        <span class=\"hljs-attr\">\"port\"<\/span>: <span class=\"hljs-number\">5173<\/span>, \n        <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"MyApp\"<\/span> \n    }\n]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"connecting-to-a-database\"><strong>Connecting to a database<\/strong><\/h3>\n\n\n\n<p>You can attach PostgreSQL or MySQL databases to any project through the <em>Execution environment<\/em> section of the question editor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11-1024x303.png\" alt=\"Screenshot of the \u201cExecution environment\u201d settings in CoderPad showing a running environment with Node 22.9 and PostgreSQL 16.4. The \u201cResources\u201d dropdown is highlighted, indicating PostgreSQL 16.4 is selected.\" class=\"wp-image-43531\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11-1024x303.png 1024w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11-300x89.png 300w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11-768x227.png 768w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11-18x5.png 18w, https:\/\/coderpad.io\/wp-content\/uploads\/2025\/09\/image-11.png 1453w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Connection credentials are provided through environment variables. For example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>username: process.env.POSTGRES_LOGIN<\/code><\/li>\n\n\n\n<li><code>password: process.env.POSTGRES_PASSWORD<\/code><\/li>\n\n\n\n<li><code>host: 'screen-execute-environment-node-postgres'<\/code><\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u2139\ufe0f Database RAM limitations<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PostgreSQL: 200MB<\/li>\n\n\n\n<li>MySQL: 500MB<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"git-integration\"><strong>Git integration<\/strong><\/h3>\n\n\n\n<p>Projects include a default <strong><code>.gitignore<\/code><\/strong> to keep ephemeral or build artifacts out of version control. As you edit your project, you will be able to keep track of all changes through the <em>Source Contro<\/em>l module.<\/p>\n\n\n\n<p>When you start editing your project, a branch is created. When you click <strong>Update project<\/strong>, your changes are automatically committed and pushed to the remote project repository.<\/p>\n\n\n\n<p>Once you save the question, the pushed commits are merged on main, and a release is created. Advanced users can manage commits manually through VS Code&#8217;s <em>Source Control <\/em>panel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-to-save-your-work\"><strong>How to save your work<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Save<\/strong> all files in VS Code (<strong>Ctrl\/Cmd + S<\/strong>)<\/li>\n\n\n\n<li>Click <strong>Update project<\/strong> at the bottom of the screen<\/li>\n\n\n\n<li>Close the IDE<\/li>\n\n\n\n<li>Click <strong>Save<\/strong> at the bottom of the question page<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u26a0\ufe0f Your temporary branch containing your updated project will only be merged into the main branch once you have <strong>saved the question<\/strong> from the question editor.<\/p>\n<\/blockquote>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"auto-grading\">Auto-grading<\/h2>\n\n\n\n<p>A properly configured <code>.coderpad\/settings.json<\/code> file is required for auto-grading functionality. The configuration defines how tests run and where results are stored.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configuration-example\"><strong>Configuration example<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n  <span class=\"hljs-attr\">\"autograding\"<\/span>: {\n    <span class=\"hljs-attr\">\"reports\"<\/span>: {\n      <span class=\"hljs-attr\">\"TAP\"<\/span>: &#91;<span class=\"hljs-string\">\"result.tap\"<\/span>]\n    },\n    <span class=\"hljs-attr\">\"runCommand\"<\/span>: <span class=\"hljs-string\">\"rm -f result.tap &amp;&amp; npm ci &amp;&amp; npx jest --ci --reporters=default --reporters=jest-tap-reporter &gt; result.tap\"<\/span>\n  }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"run-command-requirements\"><strong>Run command requirements<\/strong><\/h3>\n\n\n\n<p>The <code>runCommand<\/code> must be designed to work in a fresh container environment and should:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Install dependencies<\/strong>: Use <code>npm ci<\/code>, <code>pip install -r requirements.txt<\/code>, or equivalent<\/li>\n\n\n\n<li><strong>Execute tests<\/strong>: Run your testing framework with appropriate reporters<\/li>\n\n\n\n<li><strong>Generate reports<\/strong>: Output results in TAP or JUNIT format<\/li>\n\n\n\n<li><strong>Handle cleanup<\/strong>: Remove old result files to prevent conflicts<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"running-multiple-test-suites-backend-frontend\"><strong>Running Multiple Test Suites (Backend + Frontend)<\/strong><\/h4>\n\n\n\n<p>If your Project runs multiple test suites (for example, backend tests and frontend tests), we strongly recommend using <strong>one wrapper script<\/strong> (e.g., <code>run-all-tests.sh<\/code>) instead of running commands sequentially using operators like <code>&amp;&amp;<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>command1 &amp;&amp; command2<\/code> prevents the second suite from running if the first suite fails.<\/li>\n\n\n\n<li>Some templates clean the <code>junit-reports<\/code> directory at the start of each script, which can erase reports produced earlier.<\/li>\n<\/ul>\n\n\n\n<p><strong>Recommended pattern<\/strong><\/p>\n\n\n\n<p>Create a wrapper script:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash shcb-wrap-lines\"><span class=\"hljs-meta\">#!\/bin\/bash<\/span>\nSCRIPT_DIR=<span class=\"hljs-string\">\"<span class=\"hljs-variable\">$(cd \"$(dirname \"${BASH_SOURCE&#91;0]}\")<\/span>\"<\/span> &amp;&amp; <span class=\"hljs-built_in\">pwd<\/span>)<span class=\"hljs-string\">\"\nPROJECT_ROOT=\"<\/span><span class=\"hljs-variable\">$SCRIPT_DIR<\/span><span class=\"hljs-string\">\"\n\n# Clean up reports once\nrm -rf \"<\/span><span class=\"hljs-variable\">$PROJECT_ROOT<\/span>\/junit-reports<span class=\"hljs-string\">\"\nmkdir -p \"<\/span><span class=\"hljs-variable\">$PROJECT_ROOT<\/span>\/junit-reports<span class=\"hljs-string\">\"\n\n.\/run-backend-tests.sh\n.\/run-frontend-tests.sh<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Update <code>.coderpad\/settings.json<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\"><span class=\"hljs-string\">\"runCommand\"<\/span>: <span class=\"hljs-string\">\".\/run-all-tests.sh\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This ensures all test suites run and produce the expected combined test results.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"correct-cleanup-behavior\"><strong>Correct Cleanup Behavior<\/strong><\/h4>\n\n\n\n<p>Clean the reports directory <strong>once at the beginning<\/strong>, not inside each test script.<\/p>\n\n\n\n<p><strong>Avoid this inside test scripts:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash shcb-wrap-lines\">rm -rf junit-reports<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>If cleanup occurs inside multiple scripts, one suite may delete the reports produced by another.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"important-path-differences-between-ide-and-auto-grader\"><strong>PATH Differences Between IDE and Auto-grader<\/strong><\/h4>\n\n\n\n<p>The PATH inside the auto-grader container may differ from what you see in the IDE terminal.<\/p>\n\n\n\n<p>If a command works in the terminal but fails during auto-grading:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the <strong>absolute path<\/strong> of the command. Example for Node.js Projects:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash shcb-wrap-lines\">\/home\/coderpad\/.volta\/bin\/npm install\n\/home\/coderpad\/.volta\/bin\/npm <span class=\"hljs-built_in\">test<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This ensures consistent behavior between Preview, Sync, and candidate grading.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"skipped-tests-are-not-imported\"><strong>Skipped Tests Are Not Imported<\/strong><\/h4>\n\n\n\n<p>Auto-grading can only import test cases that appear in JUnit\/XUnit\/TAP reports.<\/p>\n\n\n\n<p>If a test is skipped (e.g., <code>pytest.skip()<\/code>):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It may <strong>not appear<\/strong> when clicking <strong>Sync from project<\/strong><\/li>\n\n\n\n<li>It will <strong>not be included<\/strong> as an evaluation criterion<\/li>\n<\/ul>\n\n\n\n<p>Instead of skipping, force a failing assertion:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">assert <span class=\"hljs-keyword\">False<\/span>, <span class=\"hljs-string\">\"Table X does not exist\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This ensures visibility during setup and accurate imports.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"supported-report-formats\"><strong>Supported report formats<\/strong><\/h3>\n\n\n\n<p>Your test command should generate test reports in either TAP or JUnit format. The <code>reports<\/code> variable defines where test reports are written and in which format (<strong><code>TAP<\/code><\/strong> or <strong><code>JUNIT<\/code><\/strong>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"evaluation-criteria-configuration\"><strong>Evaluation criteria configuration<\/strong><\/h3>\n\n\n\n<p>Once you&#8217;ve configured your <code>settings.json<\/code> file, you can customize how automated tests affect your reports through the <strong>Evaluation criteria<\/strong> section in the question editor.<\/p>\n\n\n\n<p>In the <strong>Automatic<\/strong> section, click <strong>Sync from project<\/strong> to import test cases from your project. The system will boot a fresh environment, run your <code>runCommand<\/code>, parse the generated reports, and display individual test cases for configuration.<\/p>\n\n\n\n<p>For each imported test, you can customize:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Label<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Provides a human-readable description displayed in reports<\/li>\n\n\n\n<li>Helps reviewers understand what each test validates<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Skill<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Groups points under specific skill categories (e.g., Problem Solving, Reliability)<\/li>\n\n\n\n<li>Each evaluation criterion contributes points to its assigned skill<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Points<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Adjust the <strong>weight<\/strong> from 0 to 5 to allocate more or fewer points to each test<\/li>\n\n\n\n<li>Higher weights = more points allocated<\/li>\n\n\n\n<li>Total question points are distributed proportionally across all criteria based on their weights<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"manual-grading\">Manual grading<\/h2>\n\n\n\n<p>You can complement automated testing with manual criteria for qualitative signals (e.g., code structure, readability, tests quality, security).<\/p>\n\n\n\n<p>If manual criteria are defined, when candidates complete their test, you&#8217;ll receive an email to manually grade their work against these criteria.<\/p>\n\n\n\n<p>Each project must include <strong>at least one<\/strong> evaluation criterion (automatic or manual).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"file-visibility\">File visibility<\/h2>\n\n\n\n<p>You can hide files\/folders using the <code>hiddenValidationFiles<\/code> setting in <code>.coderpad\/settings.json<\/code>.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n  <span class=\"hljs-attr\">\"autograding\"<\/span>: {\n    <span class=\"hljs-attr\">\"hiddenValidationFiles\"<\/span>: &#91;<span class=\"hljs-string\">\"docs\/**\"<\/span>]\n  }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u2139\ufe0f <code><code>hiddenValidationFiles<\/code><\/code> uses <em>glob patterns<\/em>, not literal folder names.<\/p>\n<\/blockquote>\n\n\n\n<p>This:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-string\">\"hiddenValidationFiles\"<\/span>: &#91;<span class=\"hljs-string\">\"docs\"<\/span>]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>hides only the <strong>folder itself<\/strong>, not its <strong>contents<\/strong>.<\/p>\n\n\n\n<p>To hide the folder <strong>and all children<\/strong>, use:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-string\">\"hiddenValidationFiles\"<\/span>: &#91;<span class=\"hljs-string\">\"docs\/**\"<\/span>]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This pattern hides:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>docs\/<\/code><\/li>\n\n\n\n<li><code>docs\/file.md<\/code><\/li>\n\n\n\n<li><code>docs\/subfolder\/...<\/code><\/li>\n<\/ul>\n\n\n\n<p>More glob pattern documentation: <a>https:\/\/code.visualstudio.com\/docs\/editor\/glob-patterns<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83e\uddea-does-file-hiding-work-in-preview-mode\"><strong>Does file hiding work in Preview mode?<\/strong><\/h3>\n\n\n\n<p>Yes \u2014 Preview reflects candidate visibility.<\/p>\n\n\n\n<p>If hidden files still appear:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Confirm you used <code>\/**<\/code><\/li>\n\n\n\n<li>Save the Project and click <strong>Update project<\/strong><\/li>\n\n\n\n<li>Remove + re-add the question to the test (to refresh cached structure)<\/li>\n\n\n\n<li>Ensure the path matches the workspace root<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\u2139\ufe0f-additional-examples\"><strong>Additional examples<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"JSON \/ JSON avec commentaires\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n  <span class=\"hljs-attr\">\"files.exclude\"<\/span>: &#91;\n    <span class=\"hljs-string\">\".env\"<\/span>,            <span class=\"hljs-comment\">\/\/ hide a single file<\/span>\n    <span class=\"hljs-string\">\"docs\/**\"<\/span>,         <span class=\"hljs-comment\">\/\/ hide entire folder<\/span>\n    <span class=\"hljs-string\">\"scripts\/*.sh\"<\/span>,    <span class=\"hljs-comment\">\/\/ hide matching files<\/span>\n    <span class=\"hljs-string\">\"**\/*.spec.js\"<\/span>     <span class=\"hljs-comment\">\/\/ hide all test files anywhere<\/span>\n  ]\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON avec commentaires<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"s\">Sync from project<\/h2>\n\n\n\n<p>When you click <strong>Sync from project<\/strong>, CoderPad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bootstraps a fresh environment<\/li>\n\n\n\n<li>Runs your <code>runCommand<\/code><\/li>\n\n\n\n<li>Parses any generated test reports<\/li>\n\n\n\n<li>Shows test cases that appear in those reports<\/li>\n<\/ul>\n\n\n\n<p><strong>However, Sync from project does <em>not<\/em>:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verify that your command works for all candidate submissions<\/li>\n\n\n\n<li>Guarantee correct PATH or environment behavior<\/li>\n\n\n\n<li>Ensure test suites run in the correct order<\/li>\n\n\n\n<li>Validate the correctness of your scoring<\/li>\n\n\n\n<li>Detect cleanup issues or glob mismatches<\/li>\n<\/ul>\n\n\n\n<p>In other words, Sync verifies <strong>report availability<\/strong>, not <strong>complete correctness<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"testing-your-question\">Testing your question without using quota (Preview mode)<\/h2>\n\n\n\n<p>Before assigning a Project to candidates:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the Project question.<\/li>\n\n\n\n<li>Click <strong>Preview<\/strong>.<\/li>\n\n\n\n<li>Apply your intended solution or partial solution.<\/li>\n\n\n\n<li>Submit the preview.<\/li>\n\n\n\n<li>Examine:\n<ul class=\"wp-block-list\">\n<li>Points awarded<\/li>\n\n\n\n<li>Parsing of JUnit\/TAP files<\/li>\n\n\n\n<li>Report rendering<\/li>\n\n\n\n<li>Expected pass\/fail behavior<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><strong>Preview submissions do not consume quota<\/strong> and are the <strong>recommended method<\/strong> for validating Projects end-to-end.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"regrading\">Re-grading<\/h2>\n\n\n\n<p>Currently, <strong>it is not possible<\/strong> to automatically re-run auto-grading for submissions that were completed <strong>before<\/strong> a Project was updated.<\/p>\n\n\n\n<p>If configuration issues were fixed after candidates submitted:<\/p>\n\n\n\n<p>You can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adjust scoring manually using the \u201c<a href=\"https:\/\/coderpad.io\/resources\/docs\/screen\/candidate-reports\/fixing-an-incorrectly-marked-question\/\">Fix an Incorrectly Marked Question<\/a>\u201d feature<\/li>\n\n\n\n<li>Update the Project for future candidates<\/li>\n<\/ul>\n","protected":false},"parent":8907,"menu_order":0,"template":"","class_list":["post-43224","doc","type-doc","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/doc\/43224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/doc"}],"about":[{"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/types\/doc"}],"version-history":[{"count":30,"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/doc\/43224\/revisions"}],"predecessor-version":[{"id":43752,"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/doc\/43224\/revisions\/43752"}],"up":[{"embeddable":true,"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/doc\/8907"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/fr\/wp-json\/wp\/v2\/media?parent=43224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}