{
  "totalTests": 6,
  "passed": 6,
  "failed": 0,
  "startTime": "2025-06-08T10:57:55.233Z",
  "endTime": "2025-06-08T10:57:59.249Z",
  "tests": [
    {
      "name": "Basic Node Extraction",
      "status": "passed",
      "startTime": "2025-06-08T10:57:55.236Z",
      "endTime": "2025-06-08T10:57:55.342Z",
      "error": null,
      "details": {
        "results": [
          {
            "nodeType": "@n8n/n8n-nodes-langchain.Agent",
            "extracted": false,
            "error": "Node source code not found for: @n8n/n8n-nodes-langchain.Agent"
          },
          {
            "nodeType": "n8n-nodes-base.Function",
            "extracted": true,
            "codeLength": 7449,
            "hasCredentials": false,
            "hasPackageInfo": true,
            "location": "node_modules/n8n-nodes-base/dist/nodes/Function/Function.node.js"
          },
          {
            "nodeType": "n8n-nodes-base.Webhook",
            "extracted": true,
            "codeLength": 10667,
            "hasCredentials": false,
            "hasPackageInfo": true,
            "location": "node_modules/n8n-nodes-base/dist/nodes/Webhook/Webhook.node.js"
          }
        ],
        "successCount": 2,
        "totalTested": 3
      }
    },
    {
      "name": "List Available Nodes",
      "status": "passed",
      "startTime": "2025-06-08T10:57:55.342Z",
      "endTime": "2025-06-08T10:57:55.689Z",
      "error": null,
      "details": {
        "totalNodes": 439,
        "packages": [
          "unknown"
        ],
        "nodesByPackage": {
          "unknown": [
            "ActionNetwork",
            "ActiveCampaign",
            "ActiveCampaignTrigger",
            "AcuitySchedulingTrigger",
            "Adalo",
            "Affinity",
            "AffinityTrigger",
            "AgileCrm",
            "Airtable",
            "AirtableTrigger",
            "AirtableV1",
            "Amqp",
            "AmqpTrigger",
            "ApiTemplateIo",
            "Asana",
            "AsanaTrigger",
            "Automizy",
            "Autopilot",
            "AutopilotTrigger",
            "AwsLambda",
            "AwsSns",
            "AwsSnsTrigger",
            "AwsCertificateManager",
            "AwsComprehend",
            "AwsDynamoDB",
            "AwsElb",
            "AwsRekognition",
            "AwsS3",
            "AwsS3V1",
            "AwsS3V2",
            "AwsSes",
            "AwsSqs",
            "AwsTextract",
            "AwsTranscribe",
            "Bannerbear",
            "Baserow",
            "Beeminder",
            "BitbucketTrigger",
            "Bitly",
            "Bitwarden",
            "Box",
            "BoxTrigger",
            "Brandfetch",
            "Brevo",
            "BrevoTrigger",
            "Bubble",
            "CalTrigger",
            "CalendlyTrigger",
            "Chargebee",
            "ChargebeeTrigger",
            "CircleCi",
            "CiscoWebex",
            "CiscoWebexTrigger",
            "CitrixAdc",
            "Clearbit",
            "ClickUp",
            "ClickUpTrigger",
            "Clockify",
            "ClockifyTrigger",
            "Cloudflare",
            "Cockpit",
            "Coda",
            "Code",
            "CoinGecko",
            "CompareDatasets",
            "Compression",
            "Contentful",
            "ConvertKit",
            "ConvertKitTrigger",
            "Copper",
            "CopperTrigger",
            "Cortex",
            "CrateDb",
            "Cron",
            "CrowdDev",
            "CrowdDevTrigger",
            "Crypto",
            "CustomerIo",
            "CustomerIoTrigger",
            "DateTime",
            "DateTimeV1",
            "DateTimeV2",
            "DebugHelper",
            "DeepL",
            "Demio",
            "Dhl",
            "Discord",
            "Discourse",
            "Disqus",
            "Drift",
            "Dropbox",
            "Dropcontact",
            "E2eTest",
            "ERPNext",
            "EditImage",
            "Egoi",
            "ElasticSecurity",
            "Elasticsearch",
            "EmailReadImap",
            "EmailReadImapV1",
            "EmailReadImapV2",
            "EmailSend",
            "EmailSendV1",
            "EmailSendV2",
            "Emelia",
            "EmeliaTrigger",
            "ErrorTrigger",
            "EventbriteTrigger",
            "ExecuteCommand",
            "ExecuteWorkflow",
            "ExecuteWorkflowTrigger",
            "ExecutionData",
            "FacebookGraphApi",
            "FacebookTrigger",
            "FacebookLeadAdsTrigger",
            "FigmaTrigger",
            "FileMaker",
            "Filter",
            "Flow",
            "FlowTrigger",
            "FormTrigger",
            "FormIoTrigger",
            "FormstackTrigger",
            "Freshdesk",
            "Freshservice",
            "FreshworksCrm",
            "Ftp",
            "Function",
            "FunctionItem",
            "GetResponse",
            "GetResponseTrigger",
            "Ghost",
            "Git",
            "Github",
            "GithubTrigger",
            "Gitlab",
            "GitlabTrigger",
            "GoToWebinar",
            "GoogleAds",
            "GoogleAnalytics",
            "GoogleAnalyticsV1",
            "GoogleBigQuery",
            "GoogleBigQueryV1",
            "GoogleBooks",
            "GoogleCalendar",
            "GoogleCalendarTrigger",
            "GoogleChat",
            "GoogleCloudNaturalLanguage",
            "GoogleCloudStorage",
            "GoogleContacts",
            "GoogleDocs",
            "GoogleDrive",
            "GoogleDriveTrigger",
            "GoogleDriveV1",
            "GoogleFirebaseCloudFirestore",
            "GoogleFirebaseRealtimeDatabase",
            "GSuiteAdmin",
            "Gmail",
            "GmailTrigger",
            "GmailV1",
            "GmailV2",
            "GooglePerspective",
            "GoogleSheets",
            "GoogleSheetsTrigger",
            "GoogleSlides",
            "GoogleTasks",
            "GoogleTranslate",
            "YouTube",
            "Gotify",
            "Grafana",
            "GraphQL",
            "Grist",
            "GumroadTrigger",
            "HackerNews",
            "HaloPSA",
            "Harvest",
            "HelpScout",
            "HelpScoutTrigger",
            "HighLevel",
            "HomeAssistant",
            "Html",
            "HtmlExtract",
            "HttpRequest",
            "HttpRequestV1",
            "HttpRequestV2",
            "HttpRequestV3",
            "Hubspot",
            "HubspotTrigger",
            "HubspotV1",
            "HubspotV2",
            "HumanticAi",
            "Hunter",
            "ICalendar",
            "If",
            "Intercom",
            "Interval",
            "InvoiceNinja",
            "InvoiceNinjaTrigger",
            "ItemLists",
            "ItemListsV1",
            "ItemListsV2",
            "Iterable",
            "Jenkins",
            "Jira",
            "JiraTrigger",
            "JotFormTrigger",
            "Kafka",
            "KafkaTrigger",
            "Keap",
            "KeapTrigger",
            "Kitemaker",
            "KoBoToolbox",
            "KoBoToolboxTrigger",
            "Ldap",
            "Lemlist",
            "LemlistTrigger",
            "Line",
            "Linear",
            "LinearTrigger",
            "LingvaNex",
            "LinkedIn",
            "LocalFileTrigger",
            "LoneScale",
            "LoneScaleTrigger",
            "Mqtt",
            "MqttTrigger",
            "Magento2",
            "Mailcheck",
            "Mailchimp",
            "MailchimpTrigger",
            "MailerLite",
            "MailerLiteTrigger",
            "Mailgun",
            "Mailjet",
            "MailjetTrigger",
            "Mandrill",
            "ManualTrigger",
            "Markdown",
            "Marketstack",
            "Matrix",
            "Mattermost",
            "Mautic",
            "MauticTrigger",
            "Medium",
            "Merge",
            "MergeV1",
            "MergeV2",
            "MessageBird",
            "Metabase",
            "MicrosoftDynamicsCrm",
            "MicrosoftExcel",
            "MicrosoftExcelV1",
            "MicrosoftGraphSecurity",
            "MicrosoftOneDrive",
            "MicrosoftOutlook",
            "MicrosoftOutlookV1",
            "MicrosoftSql",
            "MicrosoftTeams",
            "MicrosoftToDo",
            "Mindee",
            "Misp",
            "Mocean",
            "MondayCom",
            "MongoDb",
            "MonicaCrm",
            "MoveBinaryData",
            "Msg91",
            "MySql",
            "MySqlV1",
            "N8n",
            "N8nTrainingCustomerDatastore",
            "N8nTrainingCustomerMessenger",
            "N8nTrigger",
            "Nasa",
            "Netlify",
            "NetlifyTrigger",
            "NextCloud",
            "NoOp",
            "NocoDB",
            "Notion",
            "NotionTrigger",
            "Npm",
            "Odoo",
            "OneSimpleApi",
            "Onfleet",
            "OnfleetTrigger",
            "OpenAi",
            "OpenThesaurus",
            "OpenWeatherMap",
            "Orbit",
            "Oura",
            "Paddle",
            "PagerDuty",
            "PayPal",
            "PayPalTrigger",
            "Peekalink",
            "Phantombuster",
            "PhilipsHue",
            "Pipedrive",
            "PipedriveTrigger",
            "Plivo",
            "PostBin",
            "PostHog",
            "Postgres",
            "PostgresTrigger",
            "PostgresV1",
            "PostmarkTrigger",
            "ProfitWell",
            "Pushbullet",
            "Pushcut",
            "PushcutTrigger",
            "Pushover",
            "QuestDb",
            "QuickBase",
            "QuickBooks",
            "QuickChart",
            "RabbitMQ",
            "RabbitMQTrigger",
            "Raindrop",
            "ReadBinaryFile",
            "ReadBinaryFiles",
            "ReadPDF",
            "Reddit",
            "Redis",
            "RedisTrigger",
            "RenameKeys",
            "RespondToWebhook",
            "Rocketchat",
            "RssFeedRead",
            "RssFeedReadTrigger",
            "Rundeck",
            "S3",
            "Salesforce",
            "Salesmate",
            "ScheduleTrigger",
            "SeaTable",
            "SeaTableTrigger",
            "SecurityScorecard",
            "Segment",
            "SendGrid",
            "Sendy",
            "SentryIo",
            "ServiceNow",
            "Set",
            "SetV1",
            "SetV2",
            "Shopify",
            "ShopifyTrigger",
            "Signl4",
            "Slack",
            "SlackV1",
            "SlackV2",
            "Sms77",
            "Snowflake",
            "SplitInBatches",
            "SplitInBatchesV1",
            "SplitInBatchesV2",
            "SplitInBatchesV3",
            "Splunk",
            "Spontit",
            "Spotify",
            "SpreadsheetFile",
            "SseTrigger",
            "Ssh",
            "Stackby",
            "Start",
            "StickyNote",
            "StopAndError",
            "Storyblok",
            "Strapi",
            "Strava",
            "StravaTrigger",
            "Stripe",
            "StripeTrigger",
            "Supabase",
            "SurveyMonkeyTrigger",
            "Switch",
            "SwitchV1",
            "SwitchV2",
            "SyncroMsp",
            "Taiga",
            "TaigaTrigger",
            "Tapfiliate",
            "Telegram",
            "TelegramTrigger",
            "TheHive",
            "TheHiveTrigger",
            "TheHiveProjectTrigger",
            "TimescaleDb",
            "Todoist",
            "TodoistV1",
            "TodoistV2",
            "TogglTrigger",
            "Totp",
            "TravisCi",
            "Trello",
            "TrelloTrigger",
            "Twake",
            "Twilio",
            "Twist",
            "Twitter",
            "TwitterV1",
            "TwitterV2",
            "TypeformTrigger",
            "UProc",
            "UnleashedSoftware",
            "Uplead",
            "UptimeRobot",
            "UrlScanIo",
            "VenafiTlsProtectDatacenter",
            "VenafiTlsProtectDatacenterTrigger",
            "VenafiTlsProtectCloud",
            "VenafiTlsProtectCloudTrigger",
            "Vero",
            "Vonage",
            "Wait",
            "Webflow",
            "WebflowTrigger",
            "Webhook",
            "Wekan",
            "WhatsApp",
            "Wise",
            "WiseTrigger",
            "WooCommerce",
            "WooCommerceTrigger",
            "Wordpress",
            "WorkableTrigger",
            "WorkflowTrigger",
            "WriteBinaryFile",
            "WufooTrigger",
            "Xero",
            "Xml",
            "Yourls",
            "Zammad",
            "Zendesk",
            "ZendeskTrigger",
            "ZohoCrm",
            "Zoom",
            "Zulip"
          ]
        },
        "sampleNodes": [
          {
            "name": "ActionNetwork",
            "displayName": "Action Network",
            "description": "Consume the Action Network API",
            "location": "node_modules/n8n-nodes-base/dist/nodes/ActionNetwork/ActionNetwork.node.js"
          },
          {
            "name": "ActiveCampaign",
            "displayName": "ActiveCampaign",
            "description": "Create and edit data in ActiveCampaign",
            "location": "node_modules/n8n-nodes-base/dist/nodes/ActiveCampaign/ActiveCampaign.node.js"
          },
          {
            "name": "ActiveCampaignTrigger",
            "displayName": "ActiveCampaign Trigger",
            "description": "Handle ActiveCampaign events via webhooks",
            "location": "node_modules/n8n-nodes-base/dist/nodes/ActiveCampaign/ActiveCampaignTrigger.node.js"
          },
          {
            "name": "AcuitySchedulingTrigger",
            "displayName": "Acuity Scheduling Trigger",
            "description": "Handle Acuity Scheduling events via webhooks",
            "location": "node_modules/n8n-nodes-base/dist/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.js"
          },
          {
            "name": "Adalo",
            "displayName": "Adalo",
            "description": "Consume Adalo API",
            "location": "node_modules/n8n-nodes-base/dist/nodes/Adalo/Adalo.node.js"
          }
        ]
      }
    },
    {
      "name": "Bulk Node Extraction",
      "status": "passed",
      "startTime": "2025-06-08T10:57:55.689Z",
      "endTime": "2025-06-08T10:57:58.574Z",
      "error": null,
      "details": {
        "totalAttempted": 10,
        "successCount": 6,
        "failureCount": 4,
        "timeElapsed": 2581,
        "results": [
          {
            "success": true,
            "data": {
              "nodeType": "ActionNetwork",
              "name": "ActionNetwork",
              "codeLength": 15810,
              "codeHash": "c0a880f5754b6b532ff787bdb253dc49ffd7f470f28aeddda5be0c73f9f9935f",
              "hasCredentials": true,
              "hasPackageInfo": true,
              "location": "node_modules/n8n-nodes-base/dist/nodes/ActionNetwork/ActionNetwork.node.js",
              "extractedAt": "2025-06-08T10:57:56.009Z"
            }
          },
          {
            "success": true,
            "data": {
              "nodeType": "ActiveCampaign",
              "name": "ActiveCampaign",
              "codeLength": 38399,
              "codeHash": "5ea90671718d20eecb6cddae2e21c91470fdb778e8be97106ee2539303422ad2",
              "hasCredentials": true,
              "hasPackageInfo": true,
              "location": "node_modules/n8n-nodes-base/dist/nodes/ActiveCampaign/ActiveCampaign.node.js",
              "extractedAt": "2025-06-08T10:57:56.032Z"
            }
          },
          {
            "success": false,
            "nodeType": "ActiveCampaignTrigger",
            "error": "Node source code not found for: ActiveCampaignTrigger"
          },
          {
            "success": false,
            "nodeType": "AcuitySchedulingTrigger",
            "error": "Node source code not found for: AcuitySchedulingTrigger"
          },
          {
            "success": true,
            "data": {
              "nodeType": "Adalo",
              "name": "Adalo",
              "codeLength": 8234,
              "codeHash": "0fbcb0b60141307fdc3394154af1b2c3133fa6181aac336249c6c211fd24846f",
              "hasCredentials": true,
              "hasPackageInfo": true,
              "location": "node_modules/n8n-nodes-base/dist/nodes/Adalo/Adalo.node.js",
              "extractedAt": "2025-06-08T10:57:57.330Z"
            }
          },
          {
            "success": true,
            "data": {
              "nodeType": "Affinity",
              "name": "Affinity",
              "codeLength": 16217,
              "codeHash": "e605ea187767403dfa55cd374690f7df563a0baa7ca6991d86d522dc101a2846",
              "hasCredentials": true,
              "hasPackageInfo": true,
              "location": "node_modules/n8n-nodes-base/dist/nodes/Affinity/Affinity.node.js",
              "extractedAt": "2025-06-08T10:57:57.343Z"
            }
          },
          {
            "success": false,
            "nodeType": "AffinityTrigger",
            "error": "Node source code not found for: AffinityTrigger"
          },
          {
            "success": true,
            "data": {
              "nodeType": "AgileCrm",
              "name": "AgileCrm",
              "codeLength": 28115,
              "codeHash": "ce71c3b5dec23a48d24c5775e9bb79006ce395bed62b306c56340b5c772379c2",
              "hasCredentials": true,
              "hasPackageInfo": true,
              "location": "node_modules/n8n-nodes-base/dist/nodes/AgileCrm/AgileCrm.node.js",
              "extractedAt": "2025-06-08T10:57:57.925Z"
            }
          },
          {
            "success": true,
            "data": {
              "nodeType": "Airtable",
              "name": "Airtable",
              "codeLength": 936,
              "codeHash": "2d67e72931697178946f5127b43e954649c4c5e7ad9e29764796404ae96e7db5",
              "hasCredentials": true,
              "hasPackageInfo": true,
              "location": "node_modules/n8n-nodes-base/dist/nodes/Airtable/Airtable.node.js",
              "extractedAt": "2025-06-08T10:57:57.941Z"
            }
          },
          {
            "success": false,
            "nodeType": "AirtableTrigger",
            "error": "Node source code not found for: AirtableTrigger"
          }
        ]
      }
    },
    {
      "name": "Database Schema Validation",
      "status": "passed",
      "startTime": "2025-06-08T10:57:58.574Z",
      "endTime": "2025-06-08T10:57:58.575Z",
      "error": null,
      "details": {
        "schemaValid": true,
        "tablesCount": 4,
        "estimatedStoragePerNode": 16834
      }
    },
    {
      "name": "Error Handling",
      "status": "passed",
      "startTime": "2025-06-08T10:57:58.575Z",
      "endTime": "2025-06-08T10:57:59.244Z",
      "error": null,
      "details": {
        "totalTests": 3,
        "passed": 2,
        "results": [
          {
            "name": "Non-existent node",
            "nodeType": "non-existent-package.FakeNode",
            "expectedError": "not found",
            "passed": true,
            "actualError": "Node source code not found for: non-existent-package.FakeNode"
          },
          {
            "name": "Invalid node type format",
            "nodeType": "",
            "expectedError": "invalid",
            "passed": false,
            "actualError": "Node source code not found for: "
          },
          {
            "name": "Malformed package name",
            "nodeType": "@invalid@package.Node",
            "expectedError": "not found",
            "passed": true,
            "actualError": "Node source code not found for: @invalid@package.Node"
          }
        ]
      }
    },
    {
      "name": "MCP Server Integration",
      "status": "passed",
      "startTime": "2025-06-08T10:57:59.244Z",
      "endTime": "2025-06-08T10:57:59.249Z",
      "error": null,
      "details": {
        "serverCreated": true,
        "config": {
          "port": 3000,
          "host": "0.0.0.0",
          "authToken": "test-token"
        }
      }
    }
  ],
  "extractedNodes": 6,
  "databaseSchema": {
    "tables": {
      "nodes": {
        "columns": {
          "id": "UUID PRIMARY KEY",
          "node_type": "VARCHAR(255) UNIQUE NOT NULL",
          "name": "VARCHAR(255) NOT NULL",
          "package_name": "VARCHAR(255)",
          "display_name": "VARCHAR(255)",
          "description": "TEXT",
          "version": "VARCHAR(50)",
          "code_hash": "VARCHAR(64) NOT NULL",
          "code_length": "INTEGER NOT NULL",
          "source_location": "TEXT",
          "extracted_at": "TIMESTAMP NOT NULL",
          "updated_at": "TIMESTAMP"
        },
        "indexes": [
          "node_type",
          "package_name",
          "code_hash"
        ]
      },
      "node_source_code": {
        "columns": {
          "id": "UUID PRIMARY KEY",
          "node_id": "UUID REFERENCES nodes(id)",
          "source_code": "TEXT NOT NULL",
          "compiled_code": "TEXT",
          "source_map": "TEXT"
        }
      },
      "node_credentials": {
        "columns": {
          "id": "UUID PRIMARY KEY",
          "node_id": "UUID REFERENCES nodes(id)",
          "credential_type": "VARCHAR(255) NOT NULL",
          "credential_code": "TEXT NOT NULL",
          "required_fields": "JSONB"
        }
      },
      "node_metadata": {
        "columns": {
          "id": "UUID PRIMARY KEY",
          "node_id": "UUID REFERENCES nodes(id)",
          "package_info": "JSONB",
          "dependencies": "JSONB",
          "icon": "TEXT",
          "categories": "TEXT[]",
          "documentation_url": "TEXT"
        }
      }
    }
  }
}